*many*two-way tables of the same dimension (say 2 by 3) to carry out a test of independence. My data looks like a big matrix with each row corresponding to a two-way table (arranged by row). The permutation is just to draw a random 2 by 3 table given independence between the two dimensions, conditioning on the observed marginal distributions. I didn't find (or didn't have time to find) a function to do that in R. Therefore I wrote the following codes:

f.perm.tab<-function(x){

x.r<-rep(1:nrow(x), times=rowSums(x))

x.c<-rep(1:ncol(x), times=colSums(x))

temp.mat<-expand.grid(1:nrow(x), 1:ncol(x))

return(table(c(x.r, temp.mat[,1]), c(sample(x.c),temp.mat[,2])) -matrix(1, nrow(x), ncol(x)))

}

I also made a function to do the permutation for each line of my huge

matrix and used the apply() function to speed up things. It works pretty well

for me.

## 3 comments:

I think the following code work as well, and do not understand why you need temp.mat then substrated an identity matrix from table.

f.perm.tab<-function(x){

x.r<-rep(1:nrow(x),times=rowSums(x))

x.c<-rep(1:ncol(x),times=colSums(x))

return(table(c(x.r), c(sample(x.c))))

}

great idea. never thought about that

beltoprentPost a Comment