我是一位有用的助手,可以为您翻译文本。
我有一个向量列表,希望能得到每个向量元素之间所有可能的组合列表,即从一个向量中选取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
....
combn(DF, 2, FUN = list)
? - akrunlapply(DF, combn, m = 2, simplify = F)
? - jazzurro