Erstes foreach () und ggplot2 auszukommen
Frage
ich eine Reihe von Umfragedaten haben, und ich möchte Plots einer bestimmten Variablen erzeugen, durch das Land des Befragten gruppiert. Der Code, den ich geschrieben habe, um die Plots zu erzeugen, so weit ist:
countries <- isplit(drones, drones$v3)
foreach(country = countries) %dopar% {
png(file = paste(output.exp, "/Histogram of Job Satisfaction in ", country$key[[1]], ".png", sep = ""))
country.df <- data.frame(country) #ggplot2 doesn't appreciate the lists nextElem() produces
ggplot(country.df, aes(x = value.v51)) + geom_histogram()
dev.off()
}
Das wirklich seltsam Ding? Ich kann die isplit run (), Satz country <- nextElem(countries)
, und dann durch den Code ausführen, ohne die foreach Linie zu senden - und ein schönes Grundstück erhalten. Wenn ich die foreach senden, erhalte ich einige leere PNG-Dateien.
Vielen Dank im Voraus für Ihre Hilfe.
Ich kann auf jeden Fall tut dies mit Standard R-Schleifen, aber ich würde wirklich wie ein besseres Verständnis auf foreach
erhalten.
Lösung
Sie müssen das Grundstück print
, wenn Sie es angezeigt werden soll:
print(ggplot(country.df, aes(x = value.v51)) + geom_histogram())
In der Standardeinstellung zurückkehren ggplot Befehle ein Grundstück Objekt, sondern der Befehl selbst nicht tatsächlich die Handlung angezeigt werden; Das ist mit dem print
Kommando. Beachten Sie, dass, wenn Sie Code interaktiv ausführen, Ergebnisse von Befehlen gedruckt werden, weshalb man oft nicht den expliziten Druck benötigen. Aber als Verpackung in einem foreach
, müssen Sie da explizit drucken die Ergebnisse der Befehle im Körper nicht hallte werden.