繁体   English   中英

基因表达数据与R cor.test,corr.test或corr?

[英]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.testcorr.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.

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