簡體   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