Vous pouvez également utiliser une combinaison des fonctions formulaet paste.
Données de configuration : Imaginons que nous ayons un data.frame qui contient les variables prédictives x1de x100et 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 pastefonction, mais dans d'autres situations, grepou 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'
collapseargument insère +entre les variables prédictives
formulaconvertit la chaîne en un objet de formule de classe adapté à la lmfonction.
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)