R中的实验设计表

时间:2014-02-28 17:33:17

标签: r

如何在R?

中生成以下实验设计表?

enter image description here

3 个答案:

答案 0 :(得分:2)

看起来你想要除0 0 0 0之外的所有组合。

> # create all combinations of 4 0s/1s
> design <- expand.grid(0:1, 0:1, 0:1, 0:1)
> design
   Var1 Var2 Var3 Var4
1     0    0    0    0
2     1    0    0    0
3     0    1    0    0
4     1    1    0    0
5     0    0    1    0
6     1    0    1    0
7     0    1    1    0
8     1    1    1    0
9     0    0    0    1
10    1    0    0    1
11    0    1    0    1
12    1    1    0    1
13    0    0    1    1
14    1    0    1    1
15    0    1    1    1
16    1    1    1    1
> # remove the single run you don't want
> design[-1,]
   Var1 Var2 Var3 Var4
2     1    0    0    0
3     0    1    0    0
4     1    1    0    0
5     0    0    1    0
6     1    0    1    0
7     0    1    1    0
8     1    1    1    0
9     0    0    0    1
10    1    0    0    1
11    0    1    0    1
12    1    1    0    1
13    0    0    1    1
14    1    0    1    1
15    0    1    1    1
16    1    1    1    1

答案 1 :(得分:0)

您可以使用与连续整数的二进制表示相关联的一个很好的技巧(我假设您不希望仅生成一个带零的行):

n <- 4
M <- matrix(NA_integer_, nrow=2^n-1, ncol=n)
for (i in 1:(2^n-1))
   M[i, ] <- as.integer(intToBits(i)[1:n])
print(M)

赋予n==4

      [,1] [,2] [,3] [,4]
 [1,]    1    0    0    0
 [2,]    0    1    0    0
 [3,]    1    1    0    0
 [4,]    0    0    1    0
 [5,]    1    0    1    0
 [6,]    0    1    1    0
 [7,]    1    1    1    0
 [8,]    0    0    0    1
 [9,]    1    0    0    1
[10,]    0    1    0    1
[11,]    1    1    0    1
[12,]    0    0    1    1
[13,]    1    0    1    1
[14,]    0    1    1    1
[15,]    1    1    1    1

答案 2 :(得分:0)

如果您要分析R中的阶乘设计,最好使用many DoE packages中的一个。例如,DoE.base包有一个函数fac.design(...),它基本上可以满足您的需求:

library(DoE.base)
df <- fac.design(nlevels=2,nfactors=4,randomize=F, 
                 factor.names=list(0:1,0:1,0:1,0:1))

正如另一个答案所指出的,你的设计是一个完整的阶乘,除了它缺少两个组合(这让我想知道它是否是一个因子设计......)。