示例:如 R 中的二叉树遍历

Sample: like Binary Tree Traversal in R

我有 7 对变量:即

["F1", "R1"] ["F2", "R2"]["F3", "R3"]["F4", "R4"]["F5", "R5"]["F6", "R6"]["F7", "R7"]

并且想要生成 7 个变量的向量,其中每个变量都是从每个组中采样的。

目的是生成一个遍历向量序列(在这种情况下,将是 2^7 = 128 种可能性。

预期结果:

     [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]
[1,] 'F1'  'F2'  'F3'  'F4'  'F5'  'F6'  'F7'
[2,] 'F1'  'F2'  'F3'  'F4'  'F5'  'F6'  'R7'
[3,] 'F1'  'F2'  'F3'  'F4'  'F5'  'R6'  'F7'
[4,] 'F1'  'F2'  'F3'  'F4'  'F5'  'R6'  'R7'
[5,] 'F1'  'F2'  'F3'  'F4'  'R5'  'F6'  'F7'
[6,] 'F1'  'F2'  'F3'  'F4'  'R5'  'F6'  'R7'
...

您可以用单个 for 循环填充 matrix。您只需遍历每一列并通过使用 rep 函数重复对来填充它们。我已经对代码进行了参数化,以便对的数量可以变化:

pairs <- list(c("F1", "R1"), c("F2", "R2"), c("F3", "R3"), c("F4", "R4"),
               c("F5", "R5"), c("F6", "R6"), c("F7", "R7"))
dimension <- 7 
mat <- matrix(0,2^dimension, dimension)
for(i in 1:dimension){
   mat[,i] <- rep(pairs[[i]], each= 2^(dimension-i))
 }