我正在尝试创建一种算法,该算法将创建在 2^k 因子设计中添加两个游程的所有可能组合。我见过很多组合的例子,但没有一个真正解决这个具体问题。此算法的结果应该是 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
}
}