查找5列中3行的所有组合的所有总和

我已经使用了.CVS文件加载了一个表

 mydata = read.csv("CS2Data.csv")  # read csv file

这给了我:

 mydata

       Date   DCM  TMUS   SKM   RCI  SPOK
1  11/2/2015 -0.88 -2.16 -1.04  1.12  0.67
2  12/1/2015  1.03  3.26 -2.25 -5.51 -0.23
3   1/4/2016  1.94  1.29  0.13 -1.16  0.11
4   2/1/2016 -0.41 -2.94  0.99  3.93 -0.19
5   3/1/2016 -0.68  1.27 -0.79 -2.06 -0.33
6   4/1/2016  1.82  1.22 -0.05 -1.27 -0.46
7   5/2/2016 -0.36  3.40  0.63 -2.77  0.46
8   6/1/2016  1.94  0.77  0.51 -0.26  1.66
9   7/1/2016  0.12  3.18  1.84 -1.34 -0.67
10  8/1/2016 -1.83 -0.20 -1.10 -0.90 -1.91
11  9/1/2016  0.05  0.31  1.11  0.80  1.17
12 10/3/2016 -0.02  3.19 -0.81 -4.00  0.29

我想找到每个月(行)中5个数字中任意3个的所有组合.
我尝试使用基于我在这里找到的答案的combn函数:

combin <- combn(mydata, 3, rowSums, simplify = TRUE)

但这给了我错误 –

“Error in FUN(x[a], …) : ‘x’ must be numeric”

接下来,我尝试分别命名每个列

DCM=mydata[2]
TMUS=mydata[3]
SKM=mydata[4]
RCI=mydata[5]
SPOK=mydata[6]

然后使用:

stock_ret <- data.table(DCM, TMUS,SKM,RCI,SPOK)
combin <- combn(stock_ret, 3, rowSums, simplify = TRUE)

我怀疑有一种更简单的方法可以直接从.CVS文件中使用列标题来执行此操作,但我被卡住了.

最佳答案 获取除日期之外的所有日期(问题中错误的来源):

mydata <- mydata[,-1]

使用combn计算一次选择3列:

combn(mydata, m = 3, FUN = rowSums, simplify = TRUE)

例:

> mydata <- iris[1:10,1:4]
> combn(mydata, m = 3, FUN = rowSums, simplify = TRUE)
      [,1] [,2] [,3] [,4]
 [1,] 10.0  8.8  6.7  5.1
 [2,]  9.3  8.1  6.5  4.6
 [3,]  9.2  8.1  6.2  4.7
 [4,]  9.2  7.9  6.3  4.8
 [5,] 10.0  8.8  6.6  5.2
 [6,] 11.0  9.7  7.5  6.0
 [7,]  9.4  8.3  6.3  5.1
 [8,]  9.9  8.6  6.7  5.1
 [9,]  8.7  7.5  6.0  4.5
[10,]  9.5  8.1  6.5  4.7
点赞