三行代码  ›  专栏  ›  技术社区  ›  Jisika

通过从向量的其他元素中减去向量的每个元素来生成矩阵

  •  0
  • Jisika  · 技术社区  · 1 月前

    假设我有一个向量 a <- c(17.4, 17.2, 17.0, 16.9, 17.0, 17.4) 如何制作以下矩阵

    A <- 17.4-17.4   17.2-17.4  17.0-17.4  16.9-17.4  17.0-17.4   17.4-17.4
         17.4-17.2   17.2-17.2  17.4-17.2  16.9-17.2  17.0-17.2   17.4-17.2
         17.4-17.0   17.2-17.0  17.0-17.0  16.9-17.0  17.0-17.0   17.4-17.0
         17.4-16.9   17.2-16.9  17.0-16.9  16.9-16.9  17.0-16.9   17.4-16.9
         17.4-17.0   17.2-17.0  17.0-17.0  16.9-17.0  17.0-17.0   17.4-17.0
         17.4-17.4   17.2-17.4  17.0-17.4  16.9-17.4  17.0-17.4   17.4-17.4
    

    A <- 0.0   -0.2   -0.4   -0.5   -0.4   0.0
         0.2    0.0   -0.2   -0.3   -0.2   0.2
         0.4    0.2    0.0   -0.1    0.0   0.4
         0.5    0.3    0.1    0.0    0.1   0.5
         0.4    0.2    0.0   -0.1    0.0   0.4
         0.0   -0.2   -0.4   -0.5   -0.4   0.0
    
    2 回复  |  直到 1 月前
        1
  •  2
  •   user2974951    1 月前

    使用外部

    a <- c(17.4, 17.2, 17.0, 16.9, 17.0, 17.4)
    t(outer(a,a,`-`))
    
         [,1] [,2] [,3] [,4] [,5] [,6]
    [1,]  0.0 -0.2 -0.4 -0.5 -0.4  0.0
    [2,]  0.2  0.0 -0.2 -0.3 -0.2  0.2
    [3,]  0.4  0.2  0.0 -0.1  0.0  0.4
    [4,]  0.5  0.3  0.1  0.0  0.1  0.5
    [5,]  0.4  0.2  0.0 -0.1  0.0  0.4
    [6,]  0.0 -0.2 -0.4 -0.5 -0.4  0.0
    
        2
  •  1
  •   Sotos    1 月前

    sapply(a, function(i) i-a)
    
    matrix(Reduce(`-`, expand.grid(a,a)), ncol = length(a))