将函数应用于R中两个矩阵的所有列对

时间:2015-06-20 09:34:12

标签: r matrix

我有两个具有相同列和行名称的矩阵:

> metilacion[1:5,1:5]
            A2BP1       A2M     A2ML1     A4GALT       AAAS
paciente1   0.2804884 0.5816559 1.1814702 -0.6234276 -0.3997400
paciente2   0.5122471 1.2944264 0.5673766  0.4490407 -0.6045510
paciente3  -0.3116356 1.6085049 0.9970350  0.3379215 -0.4787046
paciente4  -0.7220941 0.8771948 2.1445474 -0.5837802 -0.4848246
paciente5  -0.3369999 1.5885716 0.8185654  0.2374583 -0.5698858
> expresion[1:5,1:5]
           A2BP1         A2M     A2ML1      A4GALT       AAAS
paciente1 -0.9082274 -0.17736185 0.8846485 -0.36059775 -0.5624139
paciente2 -1.7152290  1.62368019 0.3292617  1.35968899 -0.9220157
paciente3 -1.0581859  0.33028098 1.1020073  0.01870851 -0.9669236
paciente4 -0.8389615  1.33754885 0.5122861 -0.14583960 -0.8196533
paciente5 -1.5273835  0.06418637 0.2695209  0.03381359 -0.4461490

我想计算两个矩阵之间所有列对之间的相关系数,并生成另一个具有每个列对的相关值的对象。

例如,第一列之间的相关系数为:

> cor(metilacion[,1],expresion[,1])
[1] -0.09351992

所以,我想生成一个包含所有相关值的对象。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以cor

 cor(metilacion,expression)
 #          A2BP1         A2M      A2ML1     A4GALT        AAAS
 #A2BP1  -0.4887051  0.03682951 -0.0404260  0.5795882 -0.03534625
 #A2M    -0.5909642  0.01572799 -0.1469085  0.3503903 -0.19412101
 #A2ML1   0.8006633  0.17242226  0.1294179 -0.5827062 -0.05502329
 #A4GALT -0.8036390  0.18066923 -0.2026173  0.6824085 -0.32097886
 #AAAS    0.9033514 -0.54378874  0.7694163 -0.7995712  0.13676285

如果您需要获取相应列的cor

 diag(cor(metilacion,expresion))

或者

 mapply(cor, as.data.frame(metilacion), as.data.frame(expresion))
 #    A2BP1         A2M       A2ML1      A4GALT        AAAS 
 #-0.48870510  0.01572799  0.12941787  0.68240850  0.13676285