我有一个包含 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 & 5、2 & 6、3 & 7、4 & 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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句