Formeln in benutzerdefinierten Funktionen in R
Frage
Formeln sind eine sehr nützliche Funktion von R statistische und grafische Funktionen. Wie jeder, ich bin ein Benutzer dieser Funktionen. Aber ich habe noch nie eine Funktion geschrieben, die ein Formel-Objekt als Argument nimmt. Ich frage mich, wenn mir jemand helfen könnte, entweder durch die Anbindung an eine lesbare Einführung in diese Seite der R-Programmierung, oder durch ein in sich geschlossenes Beispiel.
Lösung
Sie können mit model.matrix()
und model.frame()
die Formel bewerten:
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))
was ergibt
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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow