簡體   English   中英

來自應用於 function coxph 的 lapply 函數的 p.value 過濾

[英]p.value filtration from an lapply-function applied for the function coxph

我正在對 566 個基因的每個表達水平進行生存分析。 我通過將 function coxph()與 function lapply結合使用來做到這一點,並且效果很好。 現在,由於考慮了大量基因,我被困在如何進行 P 值過濾以僅保留具有顯着存活率的基因,即當 P <0.05 時。

這是虛擬數據:

 df1 = structure(list(ERLIN2 = structure(c(`TCGA-A1-A0SE-01` = 1L, `TCGA-A1-A0SH-01` = 1L, 
`TCGA-A1-A0SJ-01` = 1L), .Label = c("down", "up"), class = "factor"), 
    BRF2 = structure(c(`TCGA-A1-A0SE-01` = 2L, `TCGA-A1-A0SH-01` = 1L, 
    `TCGA-A1-A0SJ-01` = 2L), .Label = c("down", "up"), class = "factor"), 
    ZNF703 = structure(c(`TCGA-A1-A0SE-01` = 2L, `TCGA-A1-A0SH-01` = 1L, 
    `TCGA-A1-A0SJ-01` = 2L), .Label = c("down", "up"), class = "factor"), 
    time = c(43.4, 47.21, 13.67), event = c(0, 0, 0)), row.names = c("TCGA-A1-A0SE-01", 
"TCGA-A1-A0SH-01", "TCGA-A1-A0SJ-01"), class = "data.frame")

之后,要接收結果,請輸入以下代碼行:

#library
if(!require(survival)) install.packages('survival')
library('survival')

#run survival analysis
df2=lapply(c("ERLIN2",    "BRF2",      "ZNF703"),

       function(x) {

         formula <- as.formula(paste('Surv(time,event)~',as.factor(x)))
         coxFit <- coxph(formula, data = df1)
         summary(coxFit)
       })

從這里開始,我嘗試按如下方式進行 P 值過濾:

for (i in 3){
    df2 = df2 %>% subset(df2[[i]]$logtest[3] < 0.05)
}

但是效率低下! 任何幫助將不勝感激!

如果您有興趣通過任何變量(在您的情況下為 logtest 的 pvalue)對列表進行子設置,我建議您使用rlist package

library(rlist)

df3 <-  list.filter(df2, logtest[["pvalue"]] < 0.05)

這將按指定的條件過濾列表。 條件也可以嵌套。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM