看一个具体的例子总是更好,但听起来我们可以像这样重新创建你的数据结构。
我有一个包含 7 列的数据框 (Df1),每列是一个变量,用于开发预测线性回归模型。
我们可以用这段代码做类似的事情:
set.seed(1)
Df1 <- as.data.frame(sapply(1:7, function(x) rnorm(10, x)))
Df1
#> V1 V2 V3 V4 V5 V6 V7
#> 1 0.3735462 3.5117812 3.918977 5.358680 4.835476 6.398106 9.401618
#> 2 1.1836433 2.3898432 3.782136 3.897212 4.746638 5.387974 6.960760
#> 3 0.1643714 1.3787594 3.074565 4.387672 5.696963 6.341120 7.689739
#> 4 2.5952808 -0.2146999 1.010648 3.946195 5.556663 4.870637 7.028002
#> 5 1.3295078 3.1249309 3.619826 2.622940 4.311244 7.433024 6.256727
#> 6 0.1795316 1.9550664 2.943871 3.585005 4.292505 7.980400 7.188792
#> 7 1.4874291 1.9838097 2.844204 3.605710 5.364582 5.632779 5.195041
#> 8 1.7383247 2.9438362 1.529248 3.940687 5.768533 4.955865 8.465555
#> 9 1.5757814 2.8212212 2.521850 5.100025 4.887654 6.569720 7.153253
#> 10 0.6946116 2.5939013 3.417942 4.763176 5.881108 5.864945 9.172612
我的第二个数据框 (Df2) 是一个 TRUE/FALSE 矩阵,包含 Df1 的每个可能的列组合。因此,它有 7 列与我的第一个数据帧 (Df1) 匹配,包含 TRUE 或 FALSE,有 127 行(每列中包含 FALSE 的第 128 行已被删除)。
此代码生成Df1 的 7 列的每种可能组合的数据框
Df2 <- as.data.frame(do.call(rbind, lapply(as.raw(0:127),
function(x) (rawToBits(x) == 0)[1:7])))
head(Df2)
#> V1 V2 V3 V4 V5 V6 V7
#> 1 TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> 2 FALSE TRUE TRUE TRUE TRUE TRUE TRUE
#> 3 TRUE FALSE TRUE TRUE TRUE TRUE TRUE
#> 4 FALSE FALSE TRUE TRUE TRUE TRUE TRUE
#> 5 TRUE TRUE FALSE TRUE TRUE TRUE TRUE
#> 6 FALSE TRUE FALSE TRUE TRUE TRUE TRUE
...
现在假设我有这个权利,解决方案是单行:
result <- apply(Df2, 1, function(i) Df1[i])
现在result 是一个包含 128 个数据框的列表,每个数据框对应于 Df1 中所有可能的列组合(包括位置 128 处的空数据框,用于 all-FALSE 案例)
head(result)
#> [[1]]
#> V1 V2 V3 V4 V5 V6 V7
#> 1 0.3735462 3.5117812 3.918977 5.358680 4.835476 6.398106 9.401618
#> 2 1.1836433 2.3898432 3.782136 3.897212 4.746638 5.387974 6.960760
#> 3 0.1643714 1.3787594 3.074565 4.387672 5.696963 6.341120 7.689739
#> 4 2.5952808 -0.2146999 1.010648 3.946195 5.556663 4.870637 7.028002
#> 5 1.3295078 3.1249309 3.619826 2.622940 4.311244 7.433024 6.256727
#> 6 0.1795316 1.9550664 2.943871 3.585005 4.292505 7.980400 7.188792
#> 7 1.4874291 1.9838097 2.844204 3.605710 5.364582 5.632779 5.195041
#> 8 1.7383247 2.9438362 1.529248 3.940687 5.768533 4.955865 8.465555
#> 9 1.5757814 2.8212212 2.521850 5.100025 4.887654 6.569720 7.153253
#> 10 0.6946116 2.5939013 3.417942 4.763176 5.881108 5.864945 9.172612
#>
#> [[2]]
#> V2 V3 V4 V5 V6 V7
#> 1 3.5117812 3.918977 5.358680 4.835476 6.398106 9.401618
#> 2 2.3898432 3.782136 3.897212 4.746638 5.387974 6.960760
#> 3 1.3787594 3.074565 4.387672 5.696963 6.341120 7.689739
#> 4 -0.2146999 1.010648 3.946195 5.556663 4.870637 7.028002
#> 5 3.1249309 3.619826 2.622940 4.311244 7.433024 6.256727
#> 6 1.9550664 2.943871 3.585005 4.292505 7.980400 7.188792
#> 7 1.9838097 2.844204 3.605710 5.364582 5.632779 5.195041
#> 8 2.9438362 1.529248 3.940687 5.768533 4.955865 8.465555
#> 9 2.8212212 2.521850 5.100025 4.887654 6.569720 7.153253
#> 10 2.5939013 3.417942 4.763176 5.881108 5.864945 9.172612
#>
#> [[3]]
#> V1 V3 V4 V5 V6 V7
#> 1 0.3735462 3.918977 5.358680 4.835476 6.398106 9.401618
#> 2 1.1836433 3.782136 3.897212 4.746638 5.387974 6.960760
#> 3 0.1643714 3.074565 4.387672 5.696963 6.341120 7.689739
#> 4 2.5952808 1.010648 3.946195 5.556663 4.870637 7.028002
#> 5 1.3295078 3.619826 2.622940 4.311244 7.433024 6.256727
#> 6 0.1795316 2.943871 3.585005 4.292505 7.980400 7.188792
#> 7 1.4874291 2.844204 3.605710 5.364582 5.632779 5.195041
#> 8 1.7383247 1.529248 3.940687 5.768533 4.955865 8.465555
#> 9 1.5757814 2.521850 5.100025 4.887654 6.569720 7.153253
#> 10 0.6946116 3.417942 4.763176 5.881108 5.864945 9.172612
#>
#> [[4]]
#> V3 V4 V5 V6 V7
#> 1 3.918977 5.358680 4.835476 6.398106 9.401618
#> 2 3.782136 3.897212 4.746638 5.387974 6.960760
#> 3 3.074565 4.387672 5.696963 6.341120 7.689739
#> 4 1.010648 3.946195 5.556663 4.870637 7.028002
#> 5 3.619826 2.622940 4.311244 7.433024 6.256727
#> 6 2.943871 3.585005 4.292505 7.980400 7.188792
#> 7 2.844204 3.605710 5.364582 5.632779 5.195041
#> 8 1.529248 3.940687 5.768533 4.955865 8.465555
#> 9 2.521850 5.100025 4.887654 6.569720 7.153253
#> 10 3.417942 4.763176 5.881108 5.864945 9.172612
#>
#> [[5]]
#> V1 V2 V4 V5 V6 V7
#> 1 0.3735462 3.5117812 5.358680 4.835476 6.398106 9.401618
#> 2 1.1836433 2.3898432 3.897212 4.746638 5.387974 6.960760
#> 3 0.1643714 1.3787594 4.387672 5.696963 6.341120 7.689739
#> 4 2.5952808 -0.2146999 3.946195 5.556663 4.870637 7.028002
#> 5 1.3295078 3.1249309 2.622940 4.311244 7.433024 6.256727
#> 6 0.1795316 1.9550664 3.585005 4.292505 7.980400 7.188792
#> 7 1.4874291 1.9838097 3.605710 5.364582 5.632779 5.195041
#> 8 1.7383247 2.9438362 3.940687 5.768533 4.955865 8.465555
#> 9 1.5757814 2.8212212 5.100025 4.887654 6.569720 7.153253
#> 10 0.6946116 2.5939013 4.763176 5.881108 5.864945 9.172612
#>
#> [[6]]
#> V2 V4 V5 V6 V7
#> 1 3.5117812 5.358680 4.835476 6.398106 9.401618
#> 2 2.3898432 3.897212 4.746638 5.387974 6.960760
#> 3 1.3787594 4.387672 5.696963 6.341120 7.689739
#> 4 -0.2146999 3.946195 5.556663 4.870637 7.028002
#> 5 3.1249309 2.622940 4.311244 7.433024 6.256727
#> 6 1.9550664 3.585005 4.292505 7.980400 7.188792
#> 7 1.9838097 3.605710 5.364582 5.632779 5.195041
#> 8 2.9438362 3.940687 5.768533 4.955865 8.465555
#> 9 2.8212212 5.100025 4.887654 6.569720 7.153253
#> 10 2.5939013 4.763176 5.881108 5.864945 9.172612
#> (etc)
由reprex package (v2.0.0) 于 2021 年 11 月 13 日创建