Você também pode usar uma combinação das funções formula
e paste
.
Dados de configuração : Vamos imaginar que temos um data.frame que contém as variáveis de previsão x1
para x100
e nossa variável dependente y
, mas que há também uma variável incômodo asdfasdf
. Além disso, as variáveis preditoras são organizadas em uma ordem para que não sejam todas contíguas no 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=""))
Imagine também que você tenha uma sequência contendo os nomes das variáveis preditoras. Nesse caso, isso pode ser criado facilmente usando a paste
função, mas em outras situações, grep
ou alguma outra abordagem pode ser usada para obter essa sequência.
PredictorVariables <- paste("x", 1:100, sep="")
Aplicar abordagem : podemos então construir uma fórmula da seguinte maneira:
Formula <- formula(paste("y ~ ",
paste(PredictorVariables, collapse=" + ")))
lm(Formula, Data)
- o
collapse
argumento é inserido +
entre as variáveis preditoras
formula
converte a string em um objeto de fórmula de classe adequado para a lm
função.
De maneira mais geral, uso a função a seguir com bastante regularidade quando quero fornecer as variáveis preditoras como vetor de nomes de variáveis.
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)
}
Por exemplo,
regression("y", PredictorVariables, Data)