Ошибка при использовании lapply для выполнения регрессии: переменные длины различаются (найдено для 'x') - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь использовать lapply для выполнения одного и того же уравнения множественной логистики c регрессии для 68 различных переменных, хранящихся в векторе fsdata_dict1. Когда я пытаюсь запустить приведенный ниже код, я получаю следующую ошибку: Error in model.frame.default(formula = binge_dr ~ x + Age_in_Yrs + Race + : variable lengths differ (found for 'x') . В данных нет NAs, и запуск str () для данных показывает, что все переменные имеют одинаковое количество наблюдений. Все переменные, насколько мне известно, определены в наборе данных, поэтому я не считаю, что проблема заключается в конфликте имен.

Код:

glm_func <- function(x){
 return(glm(binge_dr ~ x + Age_in_Yrs +  Race + SSAGA_Income + SSAGA_Educ, family = binomial, data = fdata_fs, na.action = na.pass))
}

lapply(fsdata_dict1, glm_func)

1 Ответ

0 голосов
/ 13 июля 2020

Это потому, что glm на самом деле не изменяет x в формуле на переменную, переданную как x вашей функции. Предполагая, что fsdata_dict1 содержит имена переменных, которые вы должны sh включать (как строки символов), вы можете сделать что-то вроде:

glm_func <- function(x){
f <- as.formula(paste("binge_dr ~", x, "+ Age_in_Yrs + Race + SSAGA_Income + SSAGA_Educ"))
 return(glm(f, family = binomial, data = fdata_fs, na.action = na.pass))
}

lapply(fsdata_dict1, glm_func)
...