我有一个包含2组4对配对观察的大型数据表,前几行如下:
cor.test
这些是来自两个不同RNA-seq分析管道'a'和'b'的基因表达计数:列a1和b1是通过两个不同的管道分析相同样品(1)的结果,与a2和a2相同b2等。每行(1-6)是不同的基因。我想找出是否存在显示特别差的成对相关性的特定基因,即第1列和第1列之间的整体相关性。 5,2和& 6,3& 7,4和4 8.我可以使用cor.test(c(480,770,601,953), c(469,750,588,944))$estimate
cor
0.9997302
功能手动执行此操作,例如对于第一行中的数据:
for
但是对于我的生活,我无法弄清楚如何在数据表中以自动方式做到这一点(即返回相关系数的矢量,每行一个)。我可能会做某种if(itemData.Any(data => data.itemName == userInput))
循环,但这似乎是一个丑陋的解决方案而不是“R方式”。
答案 0 :(得分:1)
您可以使用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)