Я хотел бы знать, как я могу придумать синтаксис формулы lm
, который позволил бы мне использовать paste
вместе с cbind
для множественной многомерной регрессии.
Пример
В моей модели у меня есть набор переменных, который соответствует примитивному примеру ниже:
data(mtcars)
depVars <- paste("mpg", "disp")
indepVars <- paste("qsec", "wt", "drat")
Проблема
Я хотел бы создать модель с моими depVars
и indepVars
. Модель, набранная вручную, будет выглядеть так:
modExmple <- lm(formula = cbind(mpg, disp) ~ qsec + wt + drat, data = mtcars)
Я хочу сгенерировать ту же формулу, не обращаясь к именам переменных и используя только векторы depVars
и indepVars
, определенные выше.
Попытка 1
Например, то, что я имел в виду, будет соответствовать:
mod1 <- lm(formula = formula(paste(cbind(paste(depVars, collapse = ",")), " ~ ",
indepVars)), data = mtcars)
Попытка 2
Я тоже пробовал это:
mod2 <- lm(formula = formula(cbind(depVars), paste(" ~ ",
paste(indepVars,
collapse = " + "))),
data = mtcars)
Дополнительные примечания
- Я нашел несколько хороших примеров использования
paste
с формулой, но я хотел бы знать, как я могу сочетаться сcbind
. - В основном это вопрос синтаксиса; в моих реальных данных у меня есть ряд переменных, которые я хотел бы ввести в модель, и использование ранее сгенерированного вектора более экономно и делает код более презентабельным. По сути, меня интересует только создание объекта формулы, который будет содержать
cbind
с именами переменных, соответствующими одному вектору, и остальными переменными, соответствующими другому вектору. - Одним словом, я хочу получить формулу в
modExample
без ввода имен переменных.
depVars
— этоstring
с пробелом. Вы можете использоватьpaste(c("qsec", "wt", "drat"), collapse='+')
- person akrun   schedule 01.02.2016formula(cbind(paste(depVars)), " ~ ", paste(indepVars, collapse='+')), data = mtcars)
не будет работать. Где я застреваю, так это в сочетанииcbind
/paste
. - person Konrad   schedule 01.02.2016reformulate
? - person Konrad   schedule 01.02.2016reformulate
может помочь. Я думаю проблема вpaste(depVars))
- person akrun   schedule 01.02.2016c()
, а неpaste()
. - person Konrad   schedule 01.02.2016reformulate(paste("cbind(", paste(depVars, collapse = " , "), ") ~ ", paste(indepVars, collapse = " + ")))
- person Konrad   schedule 01.02.2016