计算factor level 的组合与数字进位的联系

假设实验设计有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


得到因子组合情况。

posted on 2011-12-23 18:13 ewre 阅读(356) 评论(0)  编辑 收藏 引用 所属分类: R


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2011年12月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

留言簿(2)

文章分类

文章档案

最新评论

阅读排行榜