Dear Ozgul, I made a comment in the previous email, which I didn't check it. Thank you for the ?cor2m(). I checked the results of the example dataset with cor2m(). Does it have an option for spearman correlation?
The values below seem to be pearson #cor2m cor2m(bg,ag,trim=TRUE,alpha=0.05) ######I Otu00022 Otu00029 Otu00039 Otu00042 Otu00101 Otu00105 Otu00125 ag1 0.0000000 NaN 0.0000000 NaN 0.0000000 NaN NaN ag2 0.0000000 NaN 0.0000000 NaN 0.7743597 NaN NaN ag3 -0.8901029 NaN -0.8901029 NaN 0.0000000 NaN NaN ag4 0.0000000 NaN 0.0000000 NaN 0.0000000 NaN NaN ag5 0.0000000 NaN 0.0000000 NaN 0.0000000 NaN NaN Otu00131 Otu00137 Otu00155 Otu00158 Otu00172 Otu00181 Otu00185 Otu00190 ag1 NaN 0.0000000 NaN NaN NaN NaN NaN 0.0000000 ag2 NaN 0.0000000 NaN NaN NaN NaN NaN 0.0000000 ag3 NaN -0.8901029 NaN NaN NaN NaN NaN -0.8901029 ag4 NaN 0.0000000 NaN NaN NaN NaN NaN 0.0000000 ag5 NaN 0.0000000 NaN NaN NaN NaN NaN 0.0000000 Otu00209 Otu00218 ag1 NaN 0.0000000 ag2 NaN 0.0000000 ag3 NaN -0.8901029 ag4 NaN 0.0000000 ag5 NaN 0.0000000 #Pearson correlation from my solution: resr<-do.call(rbind,lapply(split(bg_ag,1:nrow(bg_ag)),function(x) {res<-rcorr(cbind(bg[,x[,1]],ag[,x[,2]]))$r; row.names(res)<- rep(paste(x[1],x[2],sep="_"),2);res})) indx<-row(resr)%%2!=1 resrnew<-as.matrix(resr[indx[,1],1]) resrnew1<-data.frame(read.table(text=row.names(resrnew),sep="_",stringsAsFactors=FALSE),value=resrnew) row.names(resrnew1)<-1:nrow(resrnew1) library(reshape2) dcast(resrnew1,V2~V1,value.var="value") V2 Otu00022 Otu00029 Otu00039 Otu00042 Otu00101 Otu00105 Otu00125 #1 ag1 -0.12705141 NaN -0.12705141 NaN -0.6394308 NaN NaN #2 ag2 -0.61522514 NaN -0.61522514 NaN 0.7743597 NaN NaN #3 ag3 -0.89010286 NaN -0.89010286 NaN -0.2655363 NaN NaN #4 ag4 0.03036290 NaN 0.03036290 NaN -0.5638320 NaN NaN #5 ag5 0.08266317 NaN 0.08266317 NaN -0.2582930 NaN NaN # Otu00131 Otu00137 Otu00155 Otu00158 Otu00172 Otu00181 Otu00185 Otu00190 #1 NaN -0.12705141 NaN NaN NaN NaN NaN -0.12705141 #2 NaN -0.61522514 NaN NaN NaN NaN NaN -0.61522514 #3 NaN -0.89010286 NaN NaN NaN NaN NaN -0.89010286 #4 NaN 0.03036290 NaN NaN NaN NaN NaN 0.03036290 #5 NaN 0.08266317 NaN NaN NaN NaN NaN 0.08266317 # Otu00209 Otu00218 #1 NaN -0.12705141 #2 NaN -0.61522514 #3 NaN -0.89010286 #4 NaN 0.03036290 #5 NaN 0.08266317 A.K. ----- Original Message ----- From: Ozgul Inceoglu <ozgul.inceo...@ulb.ac.be> To: R help <r-help@r-project.org> Cc: Sent: Thursday, February 14, 2013 1:10 AM Subject: Re: [R] spearman correlation and p-value as a matrix Thank you all for the answers. I really need to learn a lot. Bu I also discover cor2m(x, y, trim = TRUE, alpha = 0.05) in ecodist package, which gives an output file with significant correlations. Özgül Yj>HI, > >#ag data was created >bg<- as.matrix(read.table(text=" > Otu00022 Otu00029 Otu00039 Otu00042 Otu00101 Otu00105 Otu00125 Otu00131 >Otu00137 Otu00155 Otu00158 Otu00172 Otu00181 Otu00185 Otu00190 Otu00209 >Otu00218 >Gi20Jun11 0.001217 0 0.001217 0 0.000000 0 0 > 0 0.001217 0 0 0 0 0 0.001217 0 >0.001217 >Gi40Jun11 0.000000 0 0.000000 0 0.000000 0 0 > 0 0.000000 0 0 0 0 0 0.000000 0 >0.000000 >Gi425Jun11 0.000000 0 0.000000 0 0.000000 0 0 > 0 0.000000 0 0 0 0 0 0.000000 0 >0.000000 >Gi45Jun11 0.000000 0 0.000000 0 0.001513 0 0 > 0 0.000000 0 0 0 0 0 0.000000 0 >0.000000 >Gi475Jun11 0.000000 0 0.000000 0 0.000000 0 0 > 0 0.000000 0 0 0 0 0 0.000000 0 >0.000000 >Gi50Jun11 0.000000 0 0.000000 0 0.000000 0 0 > 0 0.000000 0 0 0 0 0 0.000000 0 >0.000000 >",sep="",header=TRUE,stringsAsFactors=F)) >set.seed(128) >ag<- matrix(rnorm(30),nrow=6) >colnames(ag)<- paste("ag",1:5,sep="") >bg_ag<-expand.grid(colnames(bg),colnames(ag),stringsAsFactors=FALSE) > attr(bg_ag,"out.attrs")<- NULL > library(Hmisc) >#correlation >resr<-do.call(rbind,lapply(split(bg_ag,1:nrow(bg_ag)),function(x) >{res<-rcorr(cbind(bg[,x[,1]],ag[,x[,2]]),type="spearman")$r; row.names(res)<- >rep(paste(x[1],x[2],sep="_"),2);res})) > head(resr) ># [,1] [,2] >#Otu00022_ag1 1.0000000 0.1309307 >#Otu00022_ag1 0.1309307 1.0000000 >#Otu00029_ag1 1.0000000 NaN >#Otu00029_ag1 NaN 1.0000000 >#Otu00039_ag1 1.0000000 0.1309307 >#Otu00039_ag1 0.1309307 1.0000000 > >#p-values >resP<-do.call(rbind,lapply(split(bg_ag,1:nrow(bg_ag)),function(x) >{res<-rcorr(cbind(bg[,x[,1]],ag[,x[,2]]),type="spearman")$P; row.names(res)<- >rep(paste(x[1],x[2],sep="_"),2);res})) > head(resP) ># [,1] [,2] >#Otu00022_ag1 NA 0.8047262 >#Otu00022_ag1 0.8047262 NA >#Otu00029_ag1 NA NaN >#Otu00029_ag1 NaN NA >#Otu00039_ag1 NA 0.8047262 >#Otu00039_ag1 0.8047262 NA > >#If you need only the values >indx<-row(resr)%%2!=1 > resPnew<-as.matrix(resP[indx[,1],1]) > resrnew<-as.matrix(resr[indx[,1],1]) > >head(resPnew) ># [,1] >#Otu00022_ag1 0.8047262 >#Otu00029_ag1 NaN >#Otu00039_ag1 0.8047262 >#Otu00042_ag1 NaN >#Otu00101_ag1 0.1583024 >#Otu00105_ag1 NaN > >head(resrnew) ># [,1] >#Otu00022_ag1 0.1309307 >#Otu00029_ag1 NaN >#Otu00039_ag1 0.1309307 >#Otu00042_ag1 NaN >#Otu00101_ag1 -0.6546537 >#Otu00105_ag1 NaN > >A.K. > > > > >----- Original Message ----- >From: Ozgul Inceoglu <ozgul.inceo...@ulb.ac.be> >To: r-help@r-project.org >Cc: >Sent: Wednesday, February 13, 2013 4:48 AM >Subject: [R] spearman correlation and p-value as a matrix > >I have two data matrices that I want to make the correlation between each >column from data1 and each column from data 2 and also calculate the p-value >Matrices dont have the same size and I tried such a script. >> bg <- read.table (file.choose(), header=T, row.names) >> bg >> Otu00022 Otu00029 Otu00039 Otu00042 Otu00101 Otu00105 Otu00125 Otu00131 >> Otu00137 Otu00155 Otu00158 Otu00172 Otu00181 Otu00185 Otu00190 Otu00209 >> Otu00218 >> Gi20Jun11 0.001217 0 0.001217 0 0.000000 0 0 0 0.001217 0 0 0 0 0 0.001217 0 >> 0.001217 >> Gi40Jun11 0.000000 0 0.000000 0 0.000000 0 0 0 0.000000 0 0 0 0 0 0.000000 0 >> 0.000000 >> Gi425Jun11 0.000000 0 0.000000 0 0.000000 0 0 0 0.000000 0 0 0 0 0 0.000000 >> 0 0.000000 >> Gi45Jun11 0.000000 0 0.000000 0 0.001513 0 0 0 0.000000 0 0 0 0 0 0.000000 0 >> 0.000000 >> Gi475Jun11 0.000000 0 0.000000 0 0.000000 0 0 0 0.000000 0 0 0 0 0 0.000000 >> 0 0.000000 >> Gi50Jun11 0.000000 0 0.000000 0 0.000000 0 0 0 0.000000 0 0 0 0 0 0.000000 0 >> 0.000000 >ag <- read.table (file.choose(), header=T, row.names) > >for (i in 1:(ncol(bg))) >for (j in 1:(ncol(ag))) >print(c(i,j)) >final_matrix <- matrix(rep("0",ncol(bg)*ncol(ag)),ncol=ncol(bg),nrow=ncol(ag)) > >cor <- cor.test(as.vector(as.matrix(bg[,i])),as.vector(as.matrix(ag[,j])), >method="spearman") > >#but the output is not matrice with all the values but a single correlation >value > >data: bg[, i] and ag[, j] >t = 2.2992, df = 26, p-value = 0.02978 >alternative hypothesis: true correlation is not equal to 0 >95 percent confidence interval: >0.04485289 0.67986803 >sample estimates: > cor >0.4110515 > ># How I can creat an outfile with all the correlations and p-values? > >Thank you very much! >Özgül > >______________________________________________ >R-help@r-project.org mailing list >https://stat.ethz.ch/mailman/listinfo/r-help >PLEASE do read the posting guide http://www.R-project.org/posting-guide.html >and provide commented, minimal, self-contained, reproducible code. > > > Özgül Inceoglu, PhD. Université Libre de Bruxelles Ecology of Aquatic Systems Campus de la plaine CP221 Boulevard du triomphe 1050 Bruxelles Belgium ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.