Ich versuche, Verteilungen mit ggplot2 programmatisch zu plotten.Nicht standardmäßige Auswertung, lapply und ggplot
Ich kann hier nicht herausfinden, wie man mit nicht standardmäßiger Auswertung (NSE) arbeitet (auch nachdem ich Hadleys Buchkapitel usw. auf NSE gelesen habe).
Betrachten Sie den folgenden Code ein:
library(ggplot2)
gg_dens <- function(x){
eval(ggplot(data.frame(x), aes_string(x = substitute(x))) + geom_density() +
ggtitle(substitute(x)), data.frame(x))
}
lapply(mtcars, function(x) gg_dens(x))
Dieser Code tut eine Reihe von Dichtekurven zu erzeugen, eine für jede Spalte, ok. Es tut jedoch nicht Drucken Sie den Namen der Variablen, die geplottet wird. Vielmehr wird die Platzhaltervariable x
gedruckt (siehe Abbildung).
Mein Ziel ist es, das x
Zitat durch die reellen Variablen Namen ersetzt zu haben, z. B. mpg
.
Dank Richard, aber für mich –
experimentieren nicht funktioniert einfach (dh dies ist ein Lernübung) Wenn nicht, hilft 'aes_string()' mit Variablen subst sehr. – hrbrmstr
'x' (in der Lapply-Schleife) ist ein unbenannter atomarer Vektor. Es hat keinen Namen, der mit 'substitute' verwendet werden kann. – LyzandeR