San*_*ndy 2 r distance matrix difference
我有一个数据框df
ID scores
1 2.1
2 1.3
3 -1
4 -3
5 2.4
Run Code Online (Sandbox Code Playgroud)
scores
我有兴趣计算一个差异矩阵,其中包含该列中每个元素与同一列中每个元素(包括其自身)的差异。
我想要的输出是这样的:
1 2 3 4 5
1 0 0.8 3.1 5.1 -0.3
2 -0.8 0 2.3 4.3 -1.1
3 -3.1 -2.3 0 2 -3.4
4 -5.1 -4.3 -2 0 -5.4
5 0.3 1.1 3.4 5.4 0
Run Code Online (Sandbox Code Playgroud)
以下帖子相关,但要求以另一种方式计算差异查找列表元素所有可能方式的差异
有没有一种简单的方法来实现此输出,也许通过使用dplyr
或某些内置函数?非常感谢任何帮助或指导!
您可以使用outer
,它是一个基本 R 函数,用于将两个向量元素的所有成对组合传递给二元函数,例如-
:
df <- data.frame(ID = 1:5, scores = c(2.1, 1.3, -1, -3, 2.4))
outer(df$scores, df$scores, `-`)
[,1] [,2] [,3] [,4] [,5]
[1,] 0.0 0.8 3.1 5.1 -0.3
[2,] -0.8 0.0 2.3 4.3 -1.1
[3,] -3.1 -2.3 0.0 2.0 -3.4
[4,] -5.1 -4.3 -2.0 0.0 -5.4
[5,] 0.3 1.1 3.4 5.4 0.0
Run Code Online (Sandbox Code Playgroud)