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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top