Как использовать paste и as.formula для создания сложной формулы? - PullRequest
0 голосов
/ 12 октября 2019

Я пытаюсь ввести уравнение, используя R в цикле, и поэтому я использую as.formula и paste. Конечный результат должен быть:

library(nlme)
glm(Sepal.Length ~ Sepal.Width + Petal.Length +Petal.Width, 
  family = gaussian(),data=iris)

Является ли это правильныммодель, не волнуйтесь, это просто пример. У меня эти переменные разбиты на 3 компонента

  • Sepal.Length и Sepal.Width - это 1 компонент
  • Petal.Length + Petal.Width - это 1 компонент
  • family = gaussian (), data = iris) - это другой компонент

Почему это не работает?

library(nlme)

glmi = glm(as.formula(paste("Sepal.Length ~ Sepal.Width+ ", 
           paste('Petal.Length +Petal.Width',
           paste(',', 'family = gaussian(),data=iris')))))

1 Ответ

2 голосов
/ 12 октября 2019

Аргумент formula для glm() - это только этот бит:

Sepal.Length ~ Sepal.Width + Petal.Length +Petal.Width

вашего исходного кода - family = gaussian(), data=iris - это разные glm() аргументы, и они там не принадлежат.

Исходя из того, что у вас есть, что-то вроде

glm(
  as.formula(paste("Sepal.Length ~ Sepal.Width+ ", paste('Petal.Length +Petal.Width'))),
  family = gaussian(),
  data=iris
)

может показаться эквивалентом того, что вы пытаетесь.

Я оставил ненужную секунду paste() там, по-видимому, это соответствует более сложной логике, которую вы упростили для вопроса.

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