Question

Les formules sont une caractéristique très utile des fonctions statistiques et graphiques de R. Comme tout le monde, je suis un utilisateur de ces fonctions. Cependant, je ne l'ai jamais écrit une fonction qui prend un objet de formule comme argument. Je me demandais si quelqu'un pouvait me aider, soit par un lien vers une introduction lisible de ce côté de la programmation R, ou en donnant un exemple autonome.

Était-ce utile?

La solution

Vous pouvez utiliser model.matrix() et model.frame() pour évaluer la formule:

lm1 <- lm(log(Volume) ~ log(Girth) + log(Height), data=trees)
print(lm1)

form <- log(Volume) ~ log(Girth) + log(Height)

# use model.matrix
mm <- model.matrix(form, trees)
lm2 <- lm.fit(as.matrix(mm), log(trees[,"Volume"]))
print(coefficients(lm2))

# use model.frame, need to add intercept by hand
mf <- model.frame(form, trees)
lm3 <- lm.fit(as.matrix(data.frame("Intercept"=1, mf[,-1])), mf[,1])
print(coefficients(lm3))

ce qui donne

Call: lm(formula = log(Volume) ~ log(Girth) + log(Height), data = trees)

Coefficients: (Intercept)   log(Girth) log(Height)
      -6.63         1.98         1.12

(Intercept)  log(Girth) log(Height)
     -6.632       1.983       1.117  
Intercept  log.Girth. log.Height.
     -6.632       1.983       1.117
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top