![](/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.