当最终大小未知时,在R中替代cbind循环

罗纳

我需要为列表中的每个元素计算内部元素的所有组合,并存储所有组合(示例中为b)。我目前在我的示例中这样做,但是对于较大的列表,由于在循环中使用了cbind,它的速度确实很慢。由于我不知道向量b的最终总大小,因此我一开始无法分配对象。我正在寻找其他替代方案以使其更有效率。

b=0
a = list(id1=c(1,2,3,4,5,6),id2=c(10,11,12))
for(i in 1:length(a)){
   temp=combn(a[[i]],2) 
   b=cbind(b,temp)
}
阿克伦

我们可以做到这一点 base R

do.call(cbind, lapply(a, combn, 2))
#[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
#[1,]    1    1    1    1    1    2    2    2    2     3     3     3     4     4
#[2,]    2    3    4    5    6    3    4    5    6     4     5     6     5     6
#     [,15] [,16] [,17] [,18]
#[1,]     5    10    10    11
#[2,]     6    11    12    12

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章