![](/img/trans.png)
[英]which kind of normalized gene expression matrix is suitable for cor, cor.test or corr.test
[英]Correlation of gene expression data on survival data in R cor.test, corr.test, or corr?
因此,我有一个非常大的数据框,其布局如下例所示:
line gene1 gene2 gene3 gene4 gene5 survival
1 4.05 7.65 0.25 0.789 10.5 0.90
2 2.51 4.36 12.5 7.56 8.99 0.50
3 3.65 2.55 48.8 5.65 5.89 0.25
4 5.65 1.54 8.99 9.2 0.01 0.10
唯一的不同是,我在实际数据中处理的基因超过18,000个。 line
指的是蝇遗传线,而在每个“基因”列中的数字指相对于基因表达。 survival
是每条线中存活率的比例。 我想做的是将第2列到第5列(基因表达)与第6列( survival
)相关联。 我已经用cor
尝试了这个,并且效果很好:
cor1<-cor(master2[c(2:5)], master2$surv, method="pearson")
但是,我想使用cor.test
或corr.test
(来自psych
软件包)执行此操作,以输出p值并对它们进行一些更正。
我试过了:
cor1<-cor.test(master2[c(2:5)], master2$surv, method="pearson")
并得到:
Error in cor.test.default(master2[c(2:5)], master2$surv, method = "pearson") :
'x' and 'y' must have the same length
我也尝试过:
cor1<-corr.test(master2[c(2:18141)], master2$surv, method="pearson")
得到:
Error in 1:ncol(y) : argument of length 0
任何帮助将不胜感激!!!
提前致谢,
菲尔
首先,根据我的经验,对大型基因表达数据集执行类似操作时, psych::corr.test()
优越得多 ,尤其是对于矩阵矩阵或df矩阵。
psych::corr.test()
的优点也是导致该错误的原因。 两个输入都必须是矩阵或数据帧-当您使用master2$surv
提取一列时,它不再是数据帧! 尝试使用master2[,ncol(master2)]
提取最后一列。
编辑:
你将能够使用cor.test
很好,但你需要sapply
第一个参数,即在感兴趣的列2:5
在你的榜样。 从性能角度来看,如果它是4列,那可能没什么大不了的,但是如果它是数千列,我会推荐pysch::corr.test
。
这是实现上述apply
。 首先将变量子集作为矩阵:
mat <- df[, 2:5]
survival <- df[, 6]
现在在mat
的列上应用cor.test()
:
cor <- apply(mat, 2, function(x) cor.test(survival, x))
提取相关系数
unlist(sapply(cor, "[", 4))
在像样的机器上应该可以轻松实现18,000个变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.