[R] applying cor.test to a (m, n) matrix

Monica Pisica pisicandru at hotmail.com
Thu May 8 21:05:53 CEST 2008


Hi everybody,

I would like to apply cor.test to a matrix with m rows and n columns and get the results in a list of matrices , one matrix for p.val, one for the statistic, one for the correlation and 2 for upper and lower confidence intervals, something analog with cor() applied to a matrix.

I have done my own function to get a matrix of p.values and i suppose i can build similar functions for all the others. But i have used for loops and i wonder if there is any way to actually use one of the functions from the "apply" family to do this in a quicker way.

Here is my little function:

cor.pval <- function(x, method = c("pearson", "kendal", "spearman"), digit=8) {
n <- dim(x)[2]
pval <- matrix(paste(rep("c", n*n), seq(1,n*n), sep = ""), n, n, byrow = T)
for (i in 1:n) {
	for (j in 1:n){
pval[i, j] <- cor.test(x[,i], x[,j], method = method)$p.value
                                  }
                   }
pval <- matrix(round(as.numeric(pval),digit), n, n, byrow = T)
rownames(pval) <- colnames(x)
colnames(pval) <- colnames(x)
return(pval)
}

Thanks for any input,

Monica







_________________________________________________________________


esh_messenger_052008


More information about the R-help mailing list