首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >矩阵中所有排列的减法

矩阵中所有排列的减法
EN

Stack Overflow用户
提问于 2017-04-21 18:23:06
回答 1查看 73关注 0票数 0

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

代码语言:javascript
复制
cADP2
      [,1]
[1,] -3.932778
[2,] -3.807778
[3,] -3.515652
[4,] -2.853333
[5,] -2.054667

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-21 18:25:03

尝试以"-“作为函数的outer

代码语言:javascript
复制
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

如果您想要这个矩阵的长格式,您可以使用来自reshape的熔体。

代码语言:javascript
复制
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
...

如果您只希望排列的一侧(1-2而不是2-1),则可以使用upper.trilower.tri。这将给出一个向量:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43549583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档