R 计算多变量的生存p值
我有一个很长的变量列表,我想计算每个变量的生存差异(p值)。我使用survfit()和surv_pvalue()函数来获得结果,但在变量循环方面遇到了一些问题R 计算多变量的生存p值,r,survminer,R,Survminer,我有一个很长的变量列表,我想计算每个变量的生存差异(p值)。我使用survfit()和surv_pvalue()函数来获得结果,但在变量循环方面遇到了一些问题 library(survminer) set.seed(2020) data <- data.frame(Months = 10 + rnorm(1:10), Status = c(rep((0),5),rep((1),5)), clin = rep(&q
library(survminer)
set.seed(2020)
data <- data.frame(Months = 10 + rnorm(1:10),
Status = c(rep((0),5),rep((1),5)),
clin = rep("bla bla", 10),
Var1 = sample(0:1, 10, replace=T,prob=c(0.5,0.5)),
Var2 = sample(0:1, 10, replace=T,prob=c(0.5,0.5)),
Var3 = sample(0:1, 10, replace=T,prob=c(0.5,0.5)))
fit.list <- list()
for (i in (4:ncol(data))){
fit <- survfit(Surv(Months, Status) ~ colnames(data)[3+i], data = data)
fit2 <- surv_pvalue(fit)
fit.list[[i]] <- fit2
}
可能意味着
4:ncol(data)
和colnames(data)[3+i]
的长度不一致,但我必须如何准确地指定它们?提前感谢您提供的解决方案 您可以使用lappy
而不是迭代并附加到列表中:
lappy(数据[4:6],函数(i){
surv_pvalue(eval)调用(“survfit”,
公式=重新格式化(名称(数据)[i],
“Surv(月、状态)”,
数据=数据)
})
#>$Var1
#>变量pval方法pval.txt
#>1个月0.3371479对数秩p=0.34
#>
#>$Var2
#>变量pval方法pval.txt
#>1个月0.3371479对数秩p=0.34
#>
#>$Var3
#>变量pval方法pval.txt
#>1个月0.3371479对数秩p=0.34
艾伦·卡梅伦的回答直截了当,而且非常有效。我几乎完美地使用了:
library(survminer)
set.seed(2020)
dat <- data.frame(Months = 10 + rnorm(1:10),
Status = c(rep((0),5),rep((1),5)),
clin = rep("bla bla", 10),
Var1 = sample(0:1, 10, replace=T,prob=c(0.5,0.5)),
Var2 = sample(0:1, 10, replace=T,prob=c(0.5,0.5)),
Var3 = sample(0:1, 10, replace=T,prob=c(0.5,0.5)))
fit.list <- list()
for (i in (4:length(dat))){
fit <- survfit(Surv(Months, Status) ~ dat[,i], data = dat)
fit2 <- surv_pvalue(fit)
fit.list[[i]] <- fit2
}
库(survminer)
设定种子(2020年)
dat谢谢,我几乎达到了目的,将对象名从“data”改为“dat”,并将colnames(data)[3+I]改为dat[,I]。我把它作为一个答案附在下面。看来,for解比lappy快得多,至少对于我的数据(296个观察值x 157个变量)
library(survminer)
set.seed(2020)
dat <- data.frame(Months = 10 + rnorm(1:10),
Status = c(rep((0),5),rep((1),5)),
clin = rep("bla bla", 10),
Var1 = sample(0:1, 10, replace=T,prob=c(0.5,0.5)),
Var2 = sample(0:1, 10, replace=T,prob=c(0.5,0.5)),
Var3 = sample(0:1, 10, replace=T,prob=c(0.5,0.5)))
fit.list <- list()
for (i in (4:length(dat))){
fit <- survfit(Surv(Months, Status) ~ dat[,i], data = dat)
fit2 <- surv_pvalue(fit)
fit.list[[i]] <- fit2
}