[英]all possible combinations of a list of vectors
我有一個向量列表,我想得到每個向量的元素之間所有可能組合的列表,即,一次取兩個和兩個以上的n個元素(來自向量)的組合。
例如,我有以下列表:
> DF
$`1`
A B C
1 11 2 432
$`2`
A B C
2 11 3 432
$`3`
A B C
3 13 4 241
這是我的代碼:
> d=list()
> for (j in 1:length(DF)){
+ for (i in 2:length(DF)){
+ d[[j]]=combn(DF[[j]],i,simplify=F)
+ }
+ }
> d
[[1]]
[[1]][[1]]
A B C
1 11 2 432
[[2]]
[[2]][[1]]
A B C
2 11 3 432
[[3]]
[[3]][[1]]
A B C
3 13 4 241
這是錯誤的,因為我只得到三個元素的組合,一次三個。 我必須一次添加兩個元素的組合。 我只是得到最后一個循環值。 這是循環內部尺寸的問題。
如果我只為i = 2運行循環,那么我得到:
> d
[[1]]
[[1]][[1]]
A B
1 11 2
[[1]][[2]]
A C
1 11 432
[[1]][[3]]
B C
1 2 432
[[2]]
[[2]][[1]]
A B
2 11 3
[[2]][[2]]
A C
2 11 432
[[2]][[3]]
B C
2 3 432
....
你可以試試
lapply(2:3, function(k) { lapply(1:length(DF),function(x){ combn(DF[[x]],k,
simplify = FALSE)})})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.