Você também pode usar uma combinação das funções formulae paste.
Dados de configuração : Vamos imaginar que temos um data.frame que contém as variáveis de previsão x1para x100e 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 pastefunção, mas em outras situações, grepou 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
collapseargumento é inserido +entre as variáveis preditoras
formulaconverte a string em um objeto de fórmula de classe adequado para a lmfunçã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)