Ви також можете використовувати комбінацію функцій 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)