小编jak*_*ung的帖子

在 R 中使用 foreach() 加速 ggplot2 的循环

我想创建一个 PDF 文件,其中包含按特定顺序排列的数百个绘图。

我的策略是使用 foreach() 并将每个 ggplot2 对象存储到输出列表中,然后将每个 ggplot2 对象打印到输出文件中。

例如,我想绘制钻石数据集中每个因素“克拉”的价格直方图:

library(ggplot2)
library(plyr)
library(foreach)  # for parallelization
library(doParallel)  # for parallelization

#setup parallel backend to use 4 processors
cl<-makeCluster(4)
registerDoParallel(cl)

# use diamonds dataset
carats.summary <- ddply(diamonds, .(carat), summarise, count = length(carat))

m.list <- foreach(i = 1:length(carats.summary$carat),
                  .packages = "ggplot2") %dopar% {
                    jcarat = carats.summary$carat[i]
                    m <- ggplot(subset(diamonds, carat == jcarat), aes(x = price)) +
                      geom_histogram()
                    print(m)
}
Run Code Online (Sandbox Code Playgroud)

通过这段代码,我希望创建一个 ggplot2 对象列表,然后我可以将其pdf()以有序方式(例如,按升序克拉)保存到单个 pdf 文件中(例如使用 )。

但是,运行此命令会导致错误消息:

Error in serialize(data, …
Run Code Online (Sandbox Code Playgroud)

parallel-processing foreach plot r ggplot2

2
推荐指数
1
解决办法
1700
查看次数

标签 统计

foreach ×1

ggplot2 ×1

parallel-processing ×1

plot ×1

r ×1