说我有一个矢量:
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
答案 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