Вы также можете использовать комбинацию из 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)