繁体   English   中英

计算R数据帧的列之间的相关性

[英]Calculating correlation between columns of R data frame

我有一个大数据表,其中包含2组,每组4个配对的观测值,其前几行如下:

   a1  a2  a3  a4  b1  b2  b3  b4
1 480 770 601 953 469 750 588 944
2   0   0   0   0   0   0   0   0
3   3  13   9  12   3  12   9  12
4   0   2   4   3   0  14   3   2
5   0   0  11   0   0   0  11   0
6 165 292 162 313 180 368 116 368

这些是来自两个不同RNA-seq分析管道'a'和'b'的基因表达计数:列a1和b1是通过两个不同管道分析相同样品(1)的结果,与a2和b2相同,等等。每行(1-6)是一个不同的基因。 我想查找是否存在显示成对相关性特别差的特定基因,即第1和cor.test和8列之间的整体相关性。我可以使用cor.test函数手动执行此操作,例如对于第一行中的数据:

cor.test(c(480,770,601,953), c(469,750,588,944))$estimate
      cor 
0.9997302

但是对于我来说,我无法弄清楚如何以自动方式在数据表中执行此操作(即返回相关系数向量,每行一个)。 我可能可以进行某种for循环,但这似乎是一个丑陋的解决方案,而不是“ R方式”。

您可以使用apply返回行相关。 MARGIN设置为1可将功能应用于每一行。 然后,您可以使用lapply仅打印出列表的cor估计。

这里是您的代码示例:

l <- apply(X = df, MARGIN = 1, FUN = function(x) cor.test(x[1:4], x[5:8]))
lapply(X = l, FUN = function(x) x$estimate)

要在列之间建立关联,请将MARGIN设置为2,并将子集更改为要比较的列。

l <- apply(X = df, MARGIN = 2, FUN = function(x) cor.test(x[2], x[6]))
    lapply(X = l, FUN = function(x) x$estimate)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM