Я хотел бы использовать библиотеку R «параллельный» для распараллеливания генерации некоторых графиков с использованием библиотеки «ggplot2» и столкнулся с трудностями при попытке сделать это в RStudio. В среде IDE mclapply поочередно замораживает сеанс или не запускает ggsave () для записи графика на диск (ошибки и предупреждения не выдаются). Он отлично работает в 100% случаев при работе вне RStudio. Я предполагаю, что RStudio делает что-то неприятное с графическими устройствами, но я не могу понять, что или обходной путь (я тоже пробовал png () / dev.off (), та же проблема). Вот код, который воспроизводит проблему:
library(ggplot2)
library(parallel)
mclapply(
0:4,
function(n) {
df <- data.frame(x = runif(10), y = runif(10))
p <- ggplot(df, aes(x, y)) + geom_point()
ggsave(
paste0('mclapply-', n, '.png'),
plot = p,
device = 'png',
width = 4,
height = 4
)
return(n)
}
)
Есть предложения для обхода?
РЕДАКТИРОВАТЬ: R 3.4.4 + RStudio 1.1.419 + ggplot2 2.2.1 в macOS 10.13.4; mclapply () возвращает lapply () в Windows (где это не поддерживается).