组合帮助算法创建增强因子设计

Combination help on algorithm to create augmented factorial design

我正在尝试创建一种算法,该算法将创建在 2^k 析因设计中添加两次运行的所有可能组合。我见过许多组合示例,但其中 none 确实解决了这个特定问题。该算法的结果应该是一个由 k 列和 (2^k 选择 1) + (2^k 选择 2) + 1 行数组成的矩阵,以给出正确的 2 组合数。所以对于 2^2 设计,我们将有 2 列和 11 行 (4 + 6 + 1) 我在下面设计了这个矩阵只是为了展示它应该是什么样子。每对行 (1,2) (2,3) (3,4) 等应该是不同的(我知道现在不是)。这不需要非常高效或使用特定语言,但更喜欢 R,我只需要弄清楚可以使用哪种方法来做到这一点

Run   A   B
 1   -1  -1
 2   -1  -1
 3    1  -1
 4    1  -1
 5   -1   1
 6   -1   1
 7    1   1
 8    1   1
 9   -1  -1
10   -1   1
11    1   1

因此,在尝试以最有效的方式执行此操作(仅比组合总数多一行)但失败后。我决定采用一种方法来生成所有组合,其中行 (1&2)、(3&4) 等是两种不同的组合。如果有人感兴趣,这里是 R 中的代码

numFactors <- 2
org <- gen.factorial(2,numFactors)
orgRow <- nrow(org)
x <- c(seq(1,orgRow))
z <- (x*2)
numARow <- sum(z) ##Double the total combinations
aug <- matrix(data = NA, nrow = numARow, ncol = numFactors)
j <- 1
k <- 1
output <- list()
for (i in 1:(numARow/2)) { ##This wil create all possible 2 combinations in the style of 1&2,3&4...
  l <- (2*i) - 1  ## 1, 3, 5 ....
  first <- org[j,]
  if (k != j) {
    second <- org[k,]
    k <- k +1
  }
  if (k == j) {
    second <- org[k,]
    k <- k +1
  }
  output[[i]] <- rbind(first,second)
  if (k == (orgRow+1)) {
    j <- j + 1
    k <- j
        }
}