Создайте функцию с аргументом, используемым в формуле - PullRequest
1 голос
/ 03 апреля 2019

Я новичок в создании функции, и у меня возникли проблемы с чем-то, возможно, базовым.

Я хотел бы создать функцию, которая принимает в качестве аргумента data.frame и имя переменной,и возвращаем линейную регрессию этой переменной другими (никакого смысла делать это, я просто пытаюсь научиться создавать функции)

my_lm <- function(df, var) lm(var~., data = df)

my_lm(diamonds, price)

Но я получаю эту ошибку:

Ошибка в eval (predvars, data, env): объект 'цена' не найден "

Спасибо за помощь и извините за плохой английский

1 Ответ

0 голосов
/ 03 апреля 2019

Одним из решений является передача price как char и использование formula() для преобразования строки в соответствующий объект для lm.

my_lm <- function(df, var) {
  f = formula(paste0(var, "~.")) # this creates "price ~ ." in the example
  lm(f, data = df)
}

my_lm(diamonds, var="price")

Или, если вам нужнопередать price как "не строка", вам нужно NSE :

my_lm <- function(df, var) {
  var = substitute(var)
  f = formula(paste0(var, "~."))
  lm(f, data = df)
}

my_lm(diamonds, var=price)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...