【发布时间】:2015-05-11 10:13:31
【问题描述】:
我想在 R 中使用 foreach 并行绘制数据,但我没有找到任何方法将我的所有绘图都放在同一个 pdf 文件中。我曾想过使用 recordPlot 将我的绘图保存在列表中,然后将它们打印到 pdf 设备中,但它不起作用。 我有以下错误:
replayPlot(x) 中的错误:从不同的会话加载快照
我也尝试过使用 ggplot,但这对于我的大型数据集来说会变慢。
这是一段显示我的问题的代码:
# Creating a dataframe : df
df=as.data.frame(matrix(nrow=1, ncol=10))
df=apply(df, 2, function(x) runif(100))
# Plotting function
par.plot=function(dat){
plot(dat)
p=recordPlot()
return(p)}
#Applying the function in parallel
library("parallel")
library("foreach")
library("doParallel")
cl <- makeCluster(detectCores())
registerDoParallel(cl, cores = detectCores())
plot.lst = foreach(i = 1:nrow(df)) %dopar% {
par.plot(df[i,])
}
# Trying to get 1st plot
plot.lst[[1]]
replayPlot(x) 中的错误:从不同的会话加载快照
当我尝试获取我的绘图时,将 %dopar% 替换为 %do% 正在起作用,因为它们似乎是在相同的环境中生成的。
我知道我可以在循环中调用一个 pdf 设备来为每次迭代生成一个文件,但我想知道是否有一种方法可以在我的函数输出处为我的所有绘图获取一个文件。
或者你知道之后合并我的 pdf 文件的简单方法吗?
感谢您的帮助。 查尔斯
【问题讨论】:
标签: r pdf plot foreach parallel-processing