foreach()将多个绘图并行保存到磁盘
我试图找出并行化是否可以加快将绘图写入磁盘的速度。为此,我当然需要拿出并行绘图的工作代码。这就是我所尝试的:foreach()将多个绘图并行保存到磁盘,r,ggplot2,foreach,parallel-processing,R,Ggplot2,Foreach,Parallel Processing,我试图找出并行化是否可以加快将绘图写入磁盘的速度。为此,我当然需要拿出并行绘图的工作代码。这就是我所尝试的: rm(list = ls()) library(ggplot2) library(foreach) library(doParallel) cl <- makeCluster(2) registerDoParallel(cl) data(diamonds) cuts <- unique(diamonds$cut) foreach(i=1:length(cuts), .
rm(list = ls())
library(ggplot2)
library(foreach)
library(doParallel)
cl <- makeCluster(2)
registerDoParallel(cl)
data(diamonds)
cuts <- unique(diamonds$cut)
foreach(i=1:length(cuts), .packages = "ggplot2") %dopar% {
ggplot(filter(diamonds, cut == cuts[i])) +
geom_line(aes(x = carat, y = price)) +
theme(legend.position = "none") +
ggtitle(cuts[i])
ggsave(filename = paste0(i, ".png"))
}
rm(list=ls())
图书馆(GG2)
图书馆(foreach)
图书馆(双平行)
cl假设您的过滤器
应该是dplyr
中的过滤器
。您当前对filter
的调用正在调用stats::filter()
(您可以通过运行:stats::filter(diamonds,cut==cuts[1])来证明您得到了相同的错误。
)
当您使用%do%
运行代码时,您的搜索()路径上可能有dplyr
,但是如果您想在%dopar%
中使用它,您需要在.packages
参数中导出它(即:.packages=c(“ggplot2”,“dplyr”)
)
新建foreach
呼叫:
foreach(i=1:length(cuts), .packages = c("ggplot2","dplyr")) %do% {
ggplot(filter(diamonds, cut == cuts[i])) +
geom_line(aes(x = carat, y = price)) +
theme(legend.position = "none") +
ggtitle(cuts[i])
ggsave(filename = paste0(i, ".png"))
}
假设您的过滤器
应该是dplyr
中的过滤器
。您当前对filter
的调用正在调用stats::filter()
(您可以通过运行:stats::filter(diamonds,cut==cuts[1])来证明您得到了相同的错误。
)
当您使用%do%
运行代码时,您的搜索()路径上可能有dplyr
,但是如果您想在%dopar%
中使用它,您需要在.packages
参数中导出它(即:.packages=c(“ggplot2”,“dplyr”)
)
新建foreach
呼叫:
foreach(i=1:length(cuts), .packages = c("ggplot2","dplyr")) %do% {
ggplot(filter(diamonds, cut == cuts[i])) +
geom_line(aes(x = carat, y = price)) +
theme(legend.position = "none") +
ggtitle(cuts[i])
ggsave(filename = paste0(i, ".png"))
}
@adam spannbauer我已经尝试过你的方法,但是foreach()
循环永远不会结束。我在MacOSX上使用带R的Rstudio。有没有进一步的洞察它为什么不工作?@SeanM这里发布的代码应该不会有任何问题陷入无限循环。这可能是代码中其他地方的另一个问题。你可以试着用最少的重复来回答一个新问题example@adam-spannbauer我已经尝试过你的方法,但是foreach()
循环永远不会结束。我在MacOSX上使用带R的Rstudio。有没有进一步的洞察它为什么不工作?@SeanM这里发布的代码应该不会有任何问题陷入无限循环。这可能是代码中其他地方的另一个问题。你可以试着用最少的例子来回答一个新问题