[英]Loop over different combinations of variables in R
我有8个变量; 1到8,我想遍历变量的所有组合并将它们写到表中。 但我不希望像这样的双打:(1,2 == 2,1)。 这是几个示例。
variables
Option 1: 1, 2
Option 2: 1, 3
Option 3: 1, 4
.....
Option 8: 1, 8
Option 9: 1, 2, 3
Option 11: 1, 2, 4
.......
option 15: 1, 2, 8
我的目标是将其写入表,如下所示(我认为这是编写循环最简单的顺序)
Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8
1 2
1 3
1 4
..........
1 8
1 2 3
...................etc.
1 2 8
...................etc.
1 2 3 4 5 6 7 8
2 3
2 4
..........etc.
2 8
我能够创建第一部分,这是代码:
df <- data.frame(matrix(vector(), 0, 8))
x = 1
for (i in 1:1){
for(j in 1:8){
if(i == j){
} else{
df[x,1] <- 1
df[x,2] <- j
x = x + 1
}
}
}
combn
将为您提供不同数量的变量组合,例如
combn(c("A", "B", "C"), 2)
# [,1] [,2] [,3]
# [1,] "A" "A" "B"
# [2,] "B" "C" "C"
每列代表一组组合,即c(“ A”,“ B”),c(“ A”,“ C”),c(“ B”,“ C”)。
对8个变量的1至8个组合使用combn
和plyr::ldply
:
var <- letters[1:8]
all <- ldply(1:8, function(x)t(combn(var, x)))
all[seq(1,nrow(all), 40),]
# 1 2 3 4 5 6 7 8
# 1 a <NA> <NA> <NA> <NA> <NA> <NA> <NA>
# 41 a b g <NA> <NA> <NA> <NA> <NA>
# 81 c f h <NA> <NA> <NA> <NA> <NA>
# 121 a d f g <NA> <NA> <NA> <NA>
# 161 d f g h <NA> <NA> <NA> <NA>
# 201 b c d f g <NA> <NA> <NA>
# 241 b c d e f h <NA> <NA>
x <- list()
for(i in 2:8) {
x[[i]] <- combn(8,i)}
这应该以矩阵格式的列表生成所需的组合,您可以按照自己的方式进行操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.