Ответ на этот вопрос вместо комментария из-за количества текста.
Если я правильно вас понимаю, вы пытаетесь перебрать список переменных, которые вы хотите добавить (каждый по очереди) к набору независимых переменных в модели выживания. Проблема в коде, который вы указали, заключается в том, что вы не даете x
место. Существует несколько подходов к этому.
Первый из них очень похож на то, что вы делаете, и создает формулы. Я демонстрирую это с помощью «рак» набор данных:
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)
})
Используя код, который вы начали, мы можем просто добавьте 'x' к вектору зависимых переменных. Тем не менее, это не очень читаемый код, и я всегда немного нервничаю в отношении индексов подающих колонн к моделям. Вместо этого вы можете быть более безопасными, используя имена переменных.
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='+'))))
Можете ли вы подробнее рассказать о том, что вы пытаетесь сделать? – Heroka
Я попробую .. Im пытается применить «Surv» (BL_AGE, CVD_AGE, INCIDENT_CVD) ~ SUKUP + HDL + SYSTM + PREVAL_DIAB, data = c' для двух столбцов моего фрейма данных ('BMI и KOL'). Я ожидаю, что 'aa' вернет мне что-то вроде этого: Surv (BL_AGE, CVD_AGE, INCIDENT_CVD) ~ BMI + SUKUP + HDL + SYSTM + PREVAL_DIAB, data = c' и' Surv (BL_AGE, CVD_AGE, INCIDENT_CVD) ~ KOL + SUKUP + HDL + SYSTM + PREVAL_DIAB, data = c'. Но вместо этого я только '$ BMI Surv (BL_AGE, CVD_AGE, INCIDENT_CVD) ~ SUKUP + HDL + SYSTM + PREVAL_DIAB $ KOL Surv (BL_AGE, CVD_AGE, INCIDENT_CVD) ~ SUKUP + HDL + SYSTM + PREVAL_DIAB' –
К сожалению, заранее , я смог бы воспроизвести пример данных. Я просто не могу понять, где я пропустил 'x' –