为R中的成对和求向量的索引

问题描述

当我运行这段代码

x <- c(2,2,10,8)
combn(x,sum)

我明白了

> combn(x,sum)
[1]  4 12 10 12 10 18

如何获取任何组合的x索引? 对于这个问题,4是2 + 2的总和,即x [1] + x [2]。我需要x的索引[1]和[2]。

解决方法

此代码将在第一行为您提供组合的第一个元素,在第二行为您提供第二个元素,在最后一行将为您提供总和:

combn(x,2,function(x) c(x,sum(x)))
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    2    2    2    2    2   10
[2,]    2   10    8   10    8    8
[3,]    4   12   10   12   10   18

如果您希望将输出作为data.frame

t(combn(x,sum(x))))-> l
dimnames(l)[[2]] <- c(paste0("X",1:2),"Sum")
as.data.frame(l)
  X1 X2 Sum
1  2  2   4
2  2 10  12
3  2  8  10
4  2 10  12
5  2  8  10
6 10  8  18