让foreach()和ggplot2相处融洽

Mat*_*ker 8 foreach r ggplot2

我有一组调查数据,我想生成一个特定变量的图,按受访者的国家分组.到目前为止我编写的用于生成图的代码是:

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()
}
Run Code Online (Sandbox Code Playgroud)

真正离奇的事情是什么?我可以运行isplit(),设置country <- nextElem(countries),然后运行代码而不发送foreach行 - 并得到一个可爱的情节.如果我发送foreach,我会得到一些空白的.png文件.

在此先感谢您的帮助.

我绝对可以用标准的R循环来做到这一点,但我真的希望能够更好地掌握它foreach.

Jon*_*ang 10

print如果要显示,则需要绘图:

print(ggplot(country.df, aes(x = value.v51)) + geom_histogram())
Run Code Online (Sandbox Code Playgroud)

默认情况下,ggplot命令返回一个绘图对象,但命令本身并不实际显示绘图; 这是通过print命令完成的.请注意,当您以交互方式运行代码时,将打印命令结果,这就是您通常不需要显式打印的原因.但是当包装在a中时foreach,需要显式打印,因为体内命令的结果不会被回显.

  • 或者,使用`ggsave` (8认同)