2016-02-22 3 views
-2

Я понимаю, что в следующемMissing функция (х) в определенной функции

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 , но я действительно не понимаю, как и где, чтобы вставить его, чтобы быть правильным. Благодарим вас за помощь.

+2

Можете ли вы подробнее рассказать о том, что вы пытаетесь сделать? – Heroka

+0

Я попробую .. 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' –

+0

К сожалению, заранее , я смог бы воспроизвести пример данных. Я просто не могу понять, где я пропустил 'x' –

ответ

1

Ответ на этот вопрос вместо комментария из-за количества текста.

Если я правильно вас понимаю, вы пытаетесь перебрать список переменных, которые вы хотите добавить (каждый по очереди) к набору независимых переменных в модели выживания. Проблема в коде, который вы указали, заключается в том, что вы не даете 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='+')))) 
+0

Да, это именно то, что я хочу сделать! Спасибо за понимание и код, который я попытаюсь переварить! Но, может быть, вы знаете, где это пространство для 'x' в функции, показанной выше? Спасибо! –

+0

Херока, большое вам спасибо! Ты спасешь мою неделю, которую я пытаюсь сделать! Ты классный! :) Я проголосовал за ответ, но он не появится, потому что я фиктивный, в любом случае благодарю тебя ! –

+0

Добро пожаловать! Это помогает, что я решил очень похожие проблемы для своих собственных исследований, поэтому подумайте над тем, что вы хотите сделать. Но я согласен с другими комментаторами в том, что ваша проблема не просто понять без каких-либо внешних знаний. – Heroka

 Смежные вопросы

  • Нет связанных вопросов^_^