p. фильтрация значений из функции lapply, примененной к функции coxph

Я провожу анализ выживаемости для каждого из уровней экспрессии 566 генов. Я сделал это, объединив функцию coxph() с функцией 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)
}

Но это неэффективно! Любая помощь будет принята!


person Huy Nguyen    schedule 13.05.2020    source источник
comment
Я не могу воспроизвести ваш список и получаю сообщение об ошибке, объект типа "закрытие" не является подмножеством   -  person Mohanasundaram    schedule 13.05.2020
comment
@Mohanasundaram Спасибо за предупреждение! Это моя вина, и я исправил. Пожалуйста, просмотрите еще раз и помогите мне. Спасибо!   -  person Huy Nguyen    schedule 13.05.2020


Ответы (1)


Если вас интересует дополнительная настройка списка какой-либо переменной (pvalue logtest в вашем случае), я бы предложил пакет rlist

library(rlist)

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

Это отфильтрует список по указанным условиям. Условия также могут быть вложенными.

person Mohanasundaram    schedule 13.05.2020
comment
Я увидел запрос на фильтрацию p-значения и подумал, что смотрю на запрос на стохастическую интеграцию. - person IRTFM; 14.05.2020