Получение foreach () и ggplot2, чтобы ладить - PullRequest
8 голосов
/ 30 августа 2009

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

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 - и получить прекрасный сюжет. Если я отправляю foreach, я получаю несколько пустых файлов .png.

Заранее спасибо за помощь.

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

1 Ответ

10 голосов
/ 30 августа 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...