假设实验设计有2个factor,每个factor分别有2,3个level,要将这些可能的level的组合一一列举。
也可以这样考虑:存在一个2位数,这个两位数每个位的进制分别为相应factor的level数,枚举这个两位数。
R脚本实现:
进位函数
carry<-function(max.num.vec,start.vec){
#A<-matrix()
A<-start.vec
while(T){
#cat(start.vec,"\n")
start.vec[length(start.vec)]<- start.vec[length(start.vec)]+1
i<-length(start.vec)
while(i>1){
if(start.vec[i] > max.num.vec[i]){
start.vec[(i-1)]<-start.vec[(i-1)]+1
start.vec[i]<-start.vec[i]-max.num.vec[i]
}
i<-i-1
}
rbind(A,start.vec)->A
#cat(start.vec,"\n")
if(length(max.num.vec[max.num.vec == start.vec]) == length(max.num.vec)){
#cat(start.vec,"\n")
#colnames(A)<-seq(1:length(start.vec))
#rownames(A)<-seq(1:prod(max.num.vec))
return(A)
}
}
}
进制(分别为3进位和2进位):
max.num.vec<-c(2,3)
起始值设为111
start.vec<-c(1,1)
运行函数
carry(max.num.vec,start.vec)
[,1] [,2]
A 1 1
start.vec 1 2
start.vec 1 3
start.vec 2 1
start.vec 2 2
start.vec 2 3
得到因子组合情况。