R-获取每一个可能的行组合的船尾



你好,我有一个问题,即如何总结行的所有组合。

考虑我有矩阵:

M<-replicate(5, rnorm(10))

现在,我想要一个通用的解决方案来使colSums向量保存在所有可能的行组合的列表或数据框架中:例如,一些示例:

第1行 第2行2

第1行 第3行的彩色..

第2行 第3行

第2行 第4行..

第1行 第2行 行3..

第4行 第7行 行10...

行1 行2 行3 行4 行4 行5 行7 行7 行8 行9 行10

有人知道解决方案吗?非常感谢

set.seed(101)
M <- replicate(5, rnorm(10))

获取指定集行的列的向量的函数

cs <- function(cc) colSums(M[cc,])

用第1和2行测试它:

cs(c(1,2))
##         1         2 
##  2.450401 -4.396749 

这将获得所有nway组合:

csN <- function(N) {
     cc <- combn(1:nrow(M),N,FUN=cs,simplify=FALSE)
     names(cc) <- combn(1:nrow(M),N,FUN=paste,collapse=",")
     return(cc)
}

这是所有组合的列表,并将它们粘在一起...

do.call("c",lapply(2:nrow(M),csN))
## quote function name for safety (fails if a vble called c exists)
## $`1,2`
## [1]  0.2264254 -0.2683963  0.5447664  1.1740892  1.2406726
## 
## $`1,3`
## [1] -1.0009803  1.9542036 -0.4317362  1.9028030 -1.8368686
## 
## ...
##
## $`2,3,4,5,6,7,8,9,10`
## [1]  2.7764374 -4.9231973 -0.3762125 -0.4554264 -4.6341908
## 
## $`1,2,3,4,5,6,7,8,9,10`
## [1]  2.4504010 -4.3967492 -0.5399682  0.4395108 -4.1517320

最新更新