web-dev-qa-db-fra.com

formule courte appelle de nombreuses variables lors de la construction d'un modèle

J'essaie de construire un modèle de régression avec lm (...). Mon jeu de données possède de nombreuses fonctionnalités (> 50). Je ne veux pas écrire mon code en tant que lm(output~feature1+feature2+feature3+...+feature70). Je me demandais quelle est la notation abrégée pour écrire ce code.

31
iinception

Vous pouvez utiliser . Comme décrit dans la page d'aide pour formula. Le . Représente "toutes les colonnes qui ne sont pas autrement dans la formule".

lm(output ~ ., data = myData).

Alternativement, construisez la formule manuellement avec paste. Cet exemple provient de la page d'aide de as.formula():

xnam <- paste("x", 1:25, sep="")
(fmla <- as.formula(paste("y ~ ", paste(xnam, collapse= "+"))))

Vous pouvez ensuite insérer cet objet dans la fonction de régression: lm(fmla, data = myData).

54
Chase

Pourrait également essayer des choses comme:

lm(output ~ myData[,2:71], data=myData)

En supposant que la sortie est la première colonne feature1: feature70 sont les 70 colonnes suivantes.

Ou

features <- paste("feature",1:70, sep="")
lm(output ~ myData[,features], data=myData)

Est probablement plus intelligent car peu importe où se trouvent vos données dans les colonnes.

Pourrait causer des problèmes s'il y a des lignes supprimées pour les NA ...

6
nzcoops