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

use*_*468 2 r

说我有一个矢量:

v <- c(11, 21, 32, 55)
Run Code Online (Sandbox Code Playgroud)

现在我想计算一个矩阵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
Run Code Online (Sandbox Code Playgroud)

And*_*rie 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
Run Code Online (Sandbox Code Playgroud)

该函数outer()使用自定义函数计算两个向量上的外积.由于操作员-也是一个功能,你可以在里面使用它outer().但是,由于-是非标准名称,您必须使用反引号或引号,即`-`"-".