繁体   English   中英

矢量列表的所有可能组合

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM