Получение foreach() и ggplot2 для совместной работы

StackOverflow https://stackoverflow.com/questions/1352863

  •  20-09-2019
  •  | 
  •  

Вопрос

У меня есть набор данных опроса, и я хотел бы сгенерировать графики определенной переменной, сгруппированные по стране респондента.Код, который я написал для генерации графиков до сих пор, является:

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()
}

Действительно странная вещь?Я могу запустить isplit(), установить country <- nextElem(countries), а затем прогоните код без отправки первой строки - и получите прекрасный сюжет.Если я отправлю foreach, я получу несколько пустых файлов в формате png.

Заранее благодарю за вашу помощь.

Я определенно могу сделать это со стандартными циклами R, но мне бы действительно хотелось лучше разобраться в foreach.

Это было полезно?

Решение

Тебе нужно print график, если вы хотите, чтобы он отображался:

print(ggplot(country.df, aes(x = value.v51)) + geom_histogram())

По умолчанию команды ggplot возвращают объект plot, но сама команда фактически не отображает график;это делается с помощью print команда.Обратите внимание, что когда вы запускаете код в интерактивном режиме, результаты команд печатаются, поэтому вам часто не нужна явная печать.Но когда заворачиваешь в foreach, вам необходимо явно напечатать, так как результаты выполнения команд в теле не будут повторены.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top