# n = number of cells; k = total number of subjects # multichoose creates all combinations multichoose= function(n, k) { if(k < 0 || n <= 0) return(NULL); if(k == 0) { return(list(numeric(n))) } if(n == 1) { return(list(k)); } arr = multichoose(n - 1, k); arr2 = multichoose(n, k - 1); out = list(); for(i in 1:(length(arr)) ) { arr[[i]]= c(0, arr[[i]]) out= c(out, arr[i]); } for(i in 1:(length(arr2)) ) { arr2[[i]][1]= arr2[[i]][1]+1 out=c(out,( arr2[i])) } return(out); } # create matrix createUnbalancedMatrix12 <- function(times=1) { m=as.data.frame(t(matrix(unlist(multichoose(4,12)), nrow=4, ncol=455))) colnames(m) = c("00","01","10","11") #remove balanced m <- m[ -which(m[,1]==3 & m[,2]==3 & m[,3]==3 & m[,4]==3),] # select patterns with all cells > 1 m2 <- m[ which(m[,1]> 1 & m[,2]>1 & m[,3]>1 & m[,4]>1),] m2=m2*times rownames(m2) <- 1:nrow(m2) #nrow(m2) n=12*times Ai=((m2$"10"+m2$"11")-(m2$"00"+m2$"01"))/n Bi=((m2$"01"+m2$"11")-(m2$"00"+m2$"10"))/n ABi=(m2$"11"-(m2$"00"+m2$"10"+m2$"01"))/n # 01 coding ABi2=((m2$"00"+m2$"11")-(m2$"10"+m2$"01"))/n # -1+1 coding ub=round(cbind(Ai,Bi,ABi,ABi2),3) invisible(cbind(m2,ub)) } #(createUnbalancedMatrix12(10)) #test