R 矩阵中所有置换的减法

R 矩阵中所有置换的减法,r,R,我为这个非常基本的问题道歉,但经过几个小时的搜索,我还没有找到答案。我有一个矩阵,一个变量(cADP)有5个重复(1:5) 我想计算每个变量的所有排列之间的减法,即1-2,1-3,1-4,1-5,2-3,2-4,2-5,3-4,3-5,4-5 但无法找出所需的代码。非常感谢您提供的任何帮助。尝试outer并使用“-”作为功能: cADP2 <- c(-3.932778,-3.807778,-3.515652,-2.853333,-2.054667) outer(cADP2,cADP2,"-

我为这个非常基本的问题道歉,但经过几个小时的搜索,我还没有找到答案。我有一个矩阵,一个变量(cADP)有5个重复(1:5)

我想计算每个变量的所有排列之间的减法,即1-2,1-3,1-4,1-5,2-3,2-4,2-5,3-4,3-5,4-5
但无法找出所需的代码。非常感谢您提供的任何帮助。

尝试
outer
并使用“-”作为功能:

cADP2 <- c(-3.932778,-3.807778,-3.515652,-2.853333,-2.054667)
outer(cADP2,cADP2,"-")

         [,1]      [,2]      [,3]      [,4]      [,5]
[1,] 0.000000 -0.125000 -0.417126 -1.079445 -1.878111
[2,] 0.125000  0.000000 -0.292126 -0.954445 -1.753111
[3,] 0.417126  0.292126  0.000000 -0.662319 -1.460985
[4,] 1.079445  0.954445  0.662319  0.000000 -0.798666
[5,] 1.878111  1.753111  1.460985  0.798666  0.000000
如果只需要排列的一侧(1-2而不是2-1),可以使用
upper.tri
lower.tri
。这将为您提供一个向量:

res <- outer(cADP2,cADP2,"-")
res[upper.tri(res)]

-0.125000 -0.417126 -0.292126 -1.079445 -0.954445 -0.662319 -1.878111 -1.753111 -1.460985 -0.798666

res击败了我!但请注意,OP的初始对象不是数字向量。可能需要
as.vector(cADP2)
非常感谢@P Lapointe!真是一种享受!你说得对,@Parfait,但事实上,当数据第一次导入R时,它是一个向量。我把它做成了一个矩阵,认为使用它会更有帮助。你应该向我们展示你迄今为止所做的尝试,以及它与你所需的偏离程度。我们不是一个代码编写服务,我们是一个清除拦截器。抱歉,你是对的。
res <- outer(cADP2,cADP2,"-")
melt(res)
   X1 X2     value
1   1  1  0.000000
2   2  1  0.125000
3   3  1  0.417126
4   4  1  1.079445
5   5  1  1.878111
...
res <- outer(cADP2,cADP2,"-")
res[upper.tri(res)]

-0.125000 -0.417126 -0.292126 -1.079445 -0.954445 -0.662319 -1.878111 -1.753111 -1.460985 -0.798666