我理解以下
aa <- sapply(c("BMI","KOL"),function(x) as.formula(paste('Surv(BL_AGE,CVD_AGE,INCIDENT_CVD) ~', paste(colnames(s)[c(21,259,330,380)], collapse='+'))))
我失踪了x
但我真的不明白如何以及在何处插入它是正确的。
谢谢你的帮助。
答案 0 :(得分:1)
由于文字数量的原因,将此作为答案而不是评论。
如果我理解正确的话,你会尝试迭代一个变量列表,你想要将它们(依次)添加到生存模型中的一组独立变量中。您提供的代码中的问题是您没有给x
一个地方。有几种方法可以做到这一点。
第一个与您正在做的非常相似,并创建公式。我使用癌症来证明这一点&#39;数据集:
library(survival)
data(cancer)
myvars <- c("meal.cal","wt.loss")
a1 <- sapply(myvars,function(x){
as.formula(sprintf("Surv(time, status)~age+sex+%s",x))
}
)
#then we can fit our models
lapply(a1,function(x){coxph(formula=x,data=cancer)})
在我看来,这有点令人费解,可以一步完成:
models <- lapply(myvars, function(x){
form <- as.formula(sprintf("Surv(time, status)~age+sex+%s",x))
fit <- coxph(formula=form, data=cancer)
return(fit)
})
使用您开始使用的代码,我们只需添加&#39; x&#39;到因变量的向量。但是,这不是非常易读的代码,我总是有点担心将列索引提供给模型。使用变量名称可能更安全。
aa <- sapply(c("BMI","KOL"),function(x) as.formula(paste('Surv(BL_AGE,CVD_AGE,INCIDENT_CVD) ~', paste(c(x,colnames(s)[c(21,259,330,380)]), collapse='+'))))