построение модели внутри функции возвращает «переменные длины отличаются (найдены для ‘var’)»

#r

#r

Вопрос:

Я пытаюсь создать функцию для запуска модели на основе списка переменных. Код отлично работает вне функции

 data <- ovarian
model <- glm(fustat ~ rx, family = binomial(), data = data)
odds.ratio(model)
 

но когда я пытаюсь сделать это в функции, она возвращает ошибку

 OR <- function(var){
  model <- glm(fustat ~ var, family = binomial(), data = data)
  return(odds.ratio(model))
}
OR("rx")

 Error in model.frame.default(formula = fustat ~ var, data = data, drop.unused.levels = TRUE) : 
  variable lengths differ (found for 'var') 
 

Есть идеи, как обойти это?

Спасибо

Ответ №1:

Вы передаете строку в качестве входных данных в функцию, преобразуете ее в формулу или что-то, что может быть приведено к формуле. Одним из способов было бы использовать reformulate .

 OR <- function(var){
  model <- glm(reformulate(var, "fustat"), family = binomial(), data = data)
  return(odds.ratio(model))
}

OR("rx")