Correlation Of Correlations In R
1
1
Entering edit mode
10.6 years ago
deschisandy ▴ 60

I have two gene correlation matrices A and B,

 seed(1) 
  X <- data.frame(matrix(rnorm(2000), nrow=10))
  Y <- data.frame(matrix(rnorm(2000), nrow=10))

I would like to find the correlation between each row of A and B in the following way. For example there should be a correlation value for row 1 of X and row 1 of Y.

Similarly applying for all rows there will be in total ten values ( because there are ten rows)

r correlation • 5.1k views
ADD COMMENT
1
Entering edit mode
10.6 years ago
zx8754 11k

Try this:

X <- matrix(rnorm(2000), nrow=10)
Y <- matrix(rnorm(2000), nrow=10)

apply(matrix(1:10),1,
      function(rowID){
        cor.test(X[rowID,],Y[rowID,])$estimate
        })
ADD COMMENT
2
Entering edit mode

You should really use sapply if you want to do it this way, i.e. sapply(1:10, function(row) cor(X[row,], Y[row,]))

edit: a more satisfying method is diag(cor(t(X), t(Y))) (I'll admit I had to google for this in the end)

ADD REPLY
2
Entering edit mode

Yes, sapply looks neater, still learning R way looping - apply...

ADD REPLY
0
Entering edit mode

Thanks , It works. Is it possible to print the row-ids as well along with the values? And also could you please explain how this was done ?

ADD REPLY
1
Entering edit mode

There are great guides on R at stackoverflow.

ADD REPLY

Login before adding your answer.

Traffic: 1835 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6