ggplot2 + aes_string innerhalb einer Funktion über die Formelschnittstelle

8

Interaktiv funktioniert dieses Beispiel gut:

%Vor%

Machen Sie nun eine Funktion mit einer Formelschnittstelle und verwenden Sie aes_string , um dasselbe zu tun, und es funktioniert nicht (Fehler ist: Error in layout_base(data, cols, drop = drop) : At least one layer must contain all variables used for facetting ):

%Vor%

Nach Jorans Trick beziehe ich hier Das ist eine ähnliche Frage, die ich kürzlich gestellt habe. In diesem Fall sieht ggplot2 meine Facetting-Anfrage nicht. Es facet_grid(".~fac2") zu machen hatte keine Wirkung. Vorschläge? Ich bin ständig über diese Dinge verwirrt. Danke!

    
Bryan Hanson 07.02.2013, 01:56
quelle

2 Antworten

5

Sie können as.formula und paste verwenden:

%Vor%

In Ihrem Beispiel ergibt dies:

    
David Robinson 07.02.2013, 02:15
quelle
6

Ich habe formula.tools für die Manipulation von Formeln verwendet.

Ich denke, Sie sollten ein separates Argument für die Facettierungsformel haben, ansonsten müssen Sie einen eigenen Parser erstellen, um herauszufinden, was wt ~ am*vs in Bezug auf die Facettierung bedeutet

etwas wie die Gittergruppierungsidee könnte nützlich sein

wt~am | vs

aber Sie müssten sich in das Gitter vertiefen, um zu sehen, wie sie ihre Formeln parsen (sehen Sie sich latticeParseFormula - kompliziert an!)

Einfacher, einfach die zwei Formeln zu trennen. Sie können eine Liste von Zeichenvariablen als rhs und lhs für das facet -Argument an facet_grid

übergeben

Ich habe auch environment = parent.frame() benutzt, was in meinen kleinen Tests funktioniert.

%Vor%

    
mnel 07.02.2013 02:35
quelle

Tags und Links