Vous pouvez également utiliser une combinaison des fonctions formula
et paste
.
Données de configuration : Imaginons que nous ayons un data.frame qui contient les variables prédictives x1
de x100
et notre variable dépendante y
, mais qu'il existe également une variable de nuisance asdfasdf
. Les variables prédictives sont également organisées dans un ordre tel qu'elles ne sont pas toutes contiguës dans le 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=""))
Imaginez également que vous ayez une chaîne contenant les noms des variables prédictives. Dans ce cas, cela peut facilement être créé à l'aide de la paste
fonction, mais dans d'autres situations, grep
ou une autre approche peut être utilisée pour obtenir cette chaîne.
PredictorVariables <- paste("x", 1:100, sep="")
Appliquer l'approche : on peut alors construire une formule comme suit:
Formula <- formula(paste("y ~ ",
paste(PredictorVariables, collapse=" + ")))
lm(Formula, Data)
- l'
collapse
argument insère +
entre les variables prédictives
formula
convertit la chaîne en un objet de formule de classe adapté à la lm
fonction.
Plus généralement, j'utilise la fonction suivante assez régulièrement lorsque je souhaite fournir une variable prédictive comme vecteur de nom de variable.
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)
}
Par exemple,
regression("y", PredictorVariables, Data)