Formel aus Modell in R extrahieren

8

Ich erstelle eine Funktion für viele Modelltypen, die die Formel zur Erstellung des Modells extrahieren müssen. Gibt es eine flexible Möglichkeit, dies zu tun? Zum Beispiel:

%Vor%

Ich muss das Formelobjekt "Gleichung" extrahieren, sobald das Modell übergeben wurde.

    
mike 14.03.2012, 00:25
quelle

2 Antworten

12

Sie könnten bekommen, was Sie wollten:

%Vor%

Und wenn du sehen willst, was ich herausgefunden habe, dann benutze:

%Vor%

Da Sie 'formula' (schlechte Namenwahl übrigens) aus der aufrufenden Umgebung übergeben haben, müssen Sie das Objekt möglicherweise aus dem übergebenen Objekt extrahieren:

%Vor%

@JPMac bot eine kompaktere Methode an: formula(model) . Es lohnt sich auch, den Mechanismus der Funktion formula.lm zu betrachten. Die Funktion formula ist generisch und Sie verwenden methods(formula) , um zu sehen, welche S3-Methoden definiert wurden. Da die Methode formula.lm am Ende ein Sternchen hat, müssen Sie sie in 'getAnywhere:

einfügen %Vor%

Es wird also "$" verwendet, um das Listenelement "formula" zu extrahieren, anstatt es aus dem Aufruf zu ziehen. Wenn das $ formula-Element fehlt (was in Ihrem Fall der Fall ist), ersetzt es das mit formula(x$terms) , von dem ich vermute, dass es formula.default aufruft, und die Operation dieser Funktion scheint nur die Umgebung des Objekts anzupassen .

    
42- 14.03.2012, 00:29
quelle
3

Wie bereits erwähnt, erhalten Sie mit model$call den Aufruf, der das Objekt lm erstellt hat, aber wenn dieser Aufruf selbst ein Objekt als Modellformel enthält, erhalten Sie den Objektnamen, nicht die Formel.

Auf das ausgewertete Objekt, dh die Formel selbst, kann in model$terms zugegriffen werden (zusammen mit einer Reihe zusätzlicher Informationen darüber, wie es behandelt wurde). Dies sollte unabhängig von den Details des Aufrufs von lm funktionieren.

    
Hong Ooi 14.03.2012 00:58
quelle

Tags und Links