Вы также можете использовать комбинацию из formulaи pasteфункций.
Данные настройки : Давайте представим , что мы быть_наст data.frame, содержащие предикторы x1к x100и наши зависимые переменных y, но есть также неприятность переменный asdfasdf. Кроме того, переменные предиктора расположены в таком порядке, что они не являются непрерывными в data.frame.
Data <- data.frame(matrix(rnorm(102 * 200), ncol=102))
names(Data) <- c(paste("x", 1:50, sep=""),
"asdfasdf", "y", paste("x", 51:100, sep=""))
Представьте также, что у вас есть строка, содержащая имена переменных-предикторов. В этом случае это можно легко создать с помощью pasteфункции, но в других ситуациях grepили для получения этой строки можно использовать другой подход.
PredictorVariables <- paste("x", 1:100, sep="")
Применить подход : мы можем затем построить формулу следующим образом:
Formula <- formula(paste("y ~ ",
paste(PredictorVariables, collapse=" + ")))
lm(Formula, Data)
- то
collapseаргумент вставка +между предикторами
formulaпреобразует строку в объект формулы класса, подходящей для lmфункции.
В более общем смысле я использую следующую функцию довольно регулярно, когда я хочу предоставить переменные предиктора в качестве вектора имен переменных.
regression <- function(dv, ivs, data) {
# run a linear model with text arguments for dv and ivs
iv_string <- paste(ivs, collapse=" + ")
regression_formula <- as.formula(paste(dv, iv_string, sep=" ~ "))
lm(regression_formula, data)
}
Например,
regression("y", PredictorVariables, Data)