我正在尝试为以下数据生成所有可能的组合(长度为 3)。诀窍是 - 我们不希望来自同一阶段的变量在一起。例如:从 Stage1 选择 1 个变量,从 Stage2 选择一个变量,从 Stage 3 选择一个变量,或者从 Stage 1 选择一个变量,从 Stage 4 选择一个变量,从 Stage 5 选择一个变量。我试图使用“combn”功能 - 但似乎不行,我已经开始使用 Expand.grid 但不确定下一步
我的下面的代码:
Stage1<-paste0("VarStage1_", seq(1:6))
Stage2<-paste0("VarStage2_", seq(1:8))
Stage3<-paste0("VarStage3_", seq(1:3))
Stage4<-paste0("VarStage4_", seq(1:4))
Stage5<-paste0("VarStage5_", seq(1:6))
new<-combn(c(Stage1, Stage2, Stage3, Stage4, Stage5, Stage5), 3)
head(t(new)) # not ok, 3 variables from Stage 1 (VarStage1_1,VarStage1_2,VarStage1_3)
my.combinations<-expand.grid(Stage1, Stage2, Stage3) # I can manually add all combinations here eg.: Stage1, Stage2, Stage5
head(my.combinations)
Run Code Online (Sandbox Code Playgroud)
您在寻找这样的东西吗?
将向量放入列表中,apply expand.grid为每个子列表创建组合索引 和 。
Stage1<-paste0("VarStage1_", seq(1:6))
Stage2<-paste0("VarStage2_", seq(1:8))
Stage3<-paste0("VarStage3_", seq(1:3))
Stage4<-paste0("VarStage4_", seq(1:4))
Stage5<-paste0("VarStage5_", seq(1:6))
vec_list <- list(Stage1, Stage2, Stage3, Stage4, Stage5, Stage5)
inx <- combn(length(vec_list), 3)
result <- apply(inx, 2, \(i) expand.grid(vec_list[i]))
lapply(result, head, n = 6)
#> [[1]]
#> Var1 Var2 Var3
#> 1 VarStage1_1 VarStage2_1 VarStage3_1
#> 2 VarStage1_2 VarStage2_1 VarStage3_1
#> 3 VarStage1_3 VarStage2_1 VarStage3_1
#> 4 VarStage1_4 VarStage2_1 VarStage3_1
#> 5 VarStage1_5 VarStage2_1 VarStage3_1
#> 6 VarStage1_6 VarStage2_1 VarStage3_1
#>
#> [[2]]
#> Var1 Var2 Var3
#> 1 VarStage1_1 VarStage2_1 VarStage4_1
#> 2 VarStage1_2 VarStage2_1 VarStage4_1
#> 3 VarStage1_3 VarStage2_1 VarStage4_1
#> 4 VarStage1_4 VarStage2_1 VarStage4_1
#> 5 VarStage1_5 VarStage2_1 VarStage4_1
#> 6 VarStage1_6 VarStage2_1 VarStage4_1
#>
#> [[3]]
#> Var1 Var2 Var3
#> 1 VarStage1_1 VarStage2_1 VarStage5_1
#> 2 VarStage1_2 VarStage2_1 VarStage5_1
#> 3 VarStage1_3 VarStage2_1 VarStage5_1
#> 4 VarStage1_4 VarStage2_1 VarStage5_1
#> 5 VarStage1_5 VarStage2_1 VarStage5_1
#> 6 VarStage1_6 VarStage2_1 VarStage5_1
#>
#> [[4]]
#> Var1 Var2 Var3
#> 1 VarStage1_1 VarStage3_1 VarStage4_1
#> 2 VarStage1_2 VarStage3_1 VarStage4_1
#> 3 VarStage1_3 VarStage3_1 VarStage4_1
#> 4 VarStage1_4 VarStage3_1 VarStage4_1
#> 5 VarStage1_5 VarStage3_1 VarStage4_1
#> 6 VarStage1_6 VarStage3_1 VarStage4_1
#>
#> [[5]]
#> Var1 Var2 Var3
#> 1 VarStage1_1 VarStage3_1 VarStage5_1
#> 2 VarStage1_2 VarStage3_1 VarStage5_1
#> 3 VarStage1_3 VarStage3_1 VarStage5_1
#> 4 VarStage1_4 VarStage3_1 VarStage5_1
#> 5 VarStage1_5 VarStage3_1 VarStage5_1
#> 6 VarStage1_6 VarStage3_1 VarStage5_1
#>
#> [[6]]
#> Var1 Var2 Var3
#> 1 VarStage1_1 VarStage4_1 VarStage5_1
#> 2 VarStage1_2 VarStage4_1 VarStage5_1
#> 3 VarStage1_3 VarStage4_1 VarStage5_1
#> 4 VarStage1_4 VarStage4_1 VarStage5_1
#> 5 VarStage1_5 VarStage4_1 VarStage5_1
#> 6 VarStage1_6 VarStage4_1 VarStage5_1
#>
#> [[7]]
#> Var1 Var2 Var3
#> 1 VarStage2_1 VarStage3_1 VarStage4_1
#> 2 VarStage2_2 VarStage3_1 VarStage4_1
#> 3 VarStage2_3 VarStage3_1 VarStage4_1
#> 4 VarStage2_4 VarStage3_1 VarStage4_1
#> 5 VarStage2_5 VarStage3_1 VarStage4_1
#> 6 VarStage2_6 VarStage3_1 VarStage4_1
#>
#> [[8]]
#> Var1 Var2 Var3
#> 1 VarStage2_1 VarStage3_1 VarStage5_1
#> 2 VarStage2_2 VarStage3_1 VarStage5_1
#> 3 VarStage2_3 VarStage3_1 VarStage5_1
#> 4 VarStage2_4 VarStage3_1 VarStage5_1
#> 5 VarStage2_5 VarStage3_1 VarStage5_1
#> 6 VarStage2_6 VarStage3_1 VarStage5_1
#>
#> [[9]]
#> Var1 Var2 Var3
#> 1 VarStage2_1 VarStage4_1 VarStage5_1
#> 2 VarStage2_2 VarStage4_1 VarStage5_1
#> 3 VarStage2_3 VarStage4_1 VarStage5_1
#> 4 VarStage2_4 VarStage4_1 VarStage5_1
#> 5 VarStage2_5 VarStage4_1 VarStage5_1
#> 6 VarStage2_6 VarStage4_1 VarStage5_1
#>
#> [[10]]
#> Var1 Var2 Var3
#> 1 VarStage3_1 VarStage4_1 VarStage5_1
#> 2 VarStage3_2 VarStage4_1 VarStage5_1
#> 3 VarStage3_3 VarStage4_1 VarStage5_1
#> 4 VarStage3_1 VarStage4_2 VarStage5_1
#> 5 VarStage3_2 VarStage4_2 VarStage5_1
#> 6 VarStage3_3 VarStage4_2 VarStage5_1
Run Code Online (Sandbox Code Playgroud)
创建于 2023-02-10,使用reprex v2.0.2
就像艾伦·卡梅伦的评论所说,将所有结果放在一个 data.frame 中,
result <- do.call(rbind, result)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |