从R中的向量计算差异矩阵

时间:2015-05-31 20:27:09

标签: r

说我有一个矢量:

v <- c(11, 21, 32, 55)

现在我想计算一个矩阵diffmat,它包含v

的所有元素之间的差异

所以相当于:

    11    21    32    55    
11   0    10    21    44
21  -10    0    11    34
32  -21  -11     0    23
55  -44  -34   -23     0

2 个答案:

答案 0 :(得分:5)

您可以使用outer()执行此操作。

尝试:

v <- c(11, 21, 32, 55)
outer(v, v, `-`)

     [,1] [,2] [,3] [,4]
[1,]    0  -10  -21  -44
[2,]   10    0  -11  -34
[3,]   21   11    0  -23
[4,]   44   34   23    0

函数outer()使用自定义函数计算两个向量上的外积。由于运算符-也是一个函数,因此您可以在outer()中使用它。但是,由于-是非标准名称,因此您必须使用反引号或引号,即`-`"-"

答案 1 :(得分:4)

您可以使用outer

R> -outer(v, v, "-")
     [,1] [,2] [,3] [,4]
[1,]    0   10   21   44
[2,]  -10    0   11   34
[3,]  -21  -11    0   23
[4,]  -44  -34  -23    0