繁体   English   中英

循环遍历R中的变量的不同组合

[英]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个组合使用combnplyr::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.

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