Как использовать R для преобразования списка имен в уравнение для Dredge - PullRequest
0 голосов
/ 03 апреля 2020

Я хочу автоматизировать превращение списков имен в уравнения регрессии для использования в команде Dredge из пакета MuMIn.

Создание этого:

[1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"  

в это:

globalmodel <- lm(Sepal.Length ~ Petal.Length + Petal.Width + Species, data = iris,na.action = "na.fail")

Теоретически кажется простым - куча пасты0. Все, что мне нужно, это способ автоматизировать «найти-заменить» превращения «» в +.

Почему это безумие? Я продолжаю добавлять переменные / столбцы в мою таблицу данных, а затем мне нужно изменить уравнение драги. Кроме того, выполнение этого предоставило бы мне фрагмент дноуглубления, который я мог бы перекрестно применить ко многим различным будущим экскаваторам.

Ответы [ 2 ]

2 голосов
/ 03 апреля 2020

Вы можете использовать reformulate для построения формулы

reformulate(names(iris)[-1], names(iris)[1])
#Sepal.Length ~ Sepal.Width + Petal.Length + Petal.Width + Species

и использовать ее в lm

lm(reformulate(names(iris)[-1],names(iris)[1]),data = iris, na.action = "na.fail")
0 голосов
/ 03 апреля 2020

Мы можем использовать paste и оно должно быть быстрее

lm(paste0(names(iris)[1], " ~ ", paste(names(iris)[-1],
      collapse= "+ ")), data = iris, na.action = "na.fail")
...