R中的并行处理

R中的并行处理,r,plot,parallel-processing,R,Plot,Parallel Processing,我在R中有一个代码,使用随机森林算法对60个数据集进行分类和估计(使用回归建模),最后有一个图显示数量是如何随时间变化的。我在同一台计算机上执行leave-one-out过程,因为这需要很长时间,所以我使用doSnow包进行并行处理。我能够看到代码工作正常(我将cat命令的输出存储在一个单独的日志文件中)。但是,当我打开foreach循环每次迭代后保存的绘图时,它是空的。似乎完全是浪费时间,因为绘图结果是我保存的唯一输出。我做错了什么?我正在使用R-Studio 代码是: # Plotting

我在R中有一个代码,使用随机森林算法对60个数据集进行分类和估计(使用回归建模),最后有一个图显示数量是如何随时间变化的。我在同一台计算机上执行leave-one-out过程,因为这需要很长时间,所以我使用doSnow包进行并行处理。我能够看到代码工作正常(我将cat命令的输出存储在一个单独的日志文件中)。但是,当我打开foreach循环每次迭代后保存的绘图时,它是空的。似乎完全是浪费时间,因为绘图结果是我保存的唯一输出。我做错了什么?我正在使用R-Studio

代码是:

# Plotting
graphics.off()

plotIt(times,result)
dev.copy(device=png,filename=str_c(p1,"/",cur,".png"),width = 800,  height =  600)
dev.off()
plotIt
(用户定义fn)的定义为:


绘图随着时间的增加而增加。随着它的增长,我正在保存每一帧。“cur”表示帧编号。假设我的t值从1到50,我将有50帧,最后一帧显示完成的绘图。因此,在我的路径(p1)中,我将有50个绘图(png文件)

这个问题已被多次重复提出。请仅保留一个实例

就答案而言: 代替下面的代码

filename=str_c(p1,"/",cur,".png")
您可以使用以下命令定义文件名:

filename=paste(p1,"/",cur,".png",sep="")
我希望p1是文件的路径。如果您对路径/file.png中的“/”有疑问,请使用

graphics.off()
setwd(p1)
png(filename=paste(cur,".png",sep=""),width = 800,  height =  600)
plotIt(times,result)  
dev.off() 
您还没有写任何关于“cur”是如何生成的。因此,请在您的解释中也包括这一点,以便更容易发现代码中的问题。 最好的
-Mandar

如果在绘图之前尝试打开png设备会怎么样。我怀疑您使用的
plotIt
方式被发送到空设备,因此您得到的是空打印

png(filename=str_c(p1,"/",cur,".png"),width = 800,  height =  600)
plotIt(times,result)
dev.off()

请拿出一些来,我们需要一个。你是如何保存这些情节的?使用
ggsave
?#Plotting graphics.off()plotIt(时间,结果)dev.copy(device=png,filename=str_c(p1,“/”,cur,“.png”),width=800,height=600)dev.off()where plotIt是一个使用plot(时间,输出)的函数where's
plotIt
from?显然,它不是来自
ggplot2
。它不应该是
plotit
?plotit是一个用户定义的函数。该定义本质上告诉R在绘图增长时显示绘图。定义是这样的:{par(mar=c(4.1,4.2,0.5,0.5))par(mfrow=c(2,1))t=time[length(time)]plot(time/60,result,xlab=“time(min)”,ylab=“result”,xlim=c(min(times)/60,max(times)/60),ylim=c(0,1),“s”)点(t/60,result[length(result)],col=“red”)线(c(min(次)/60,最大(次)/60),c(0.5,0.5),lty=2)行(c(0,0),c(0,1),lty=3)请将此代码和其他相关代码添加到问题中,在评论中很难阅读。感谢您的回复。添加。很抱歉,我不好,我第一次使用这些论坛。我认为这两个论坛是分开的。问题是,这工作非常好,当我做一个简单的for循环时,我得到了我想要的。但是,当我尝试将它放在foreach中时d做并行,我只是有空的png文件。不知道如何更正它。嗨,你能添加你用来生成“cur”的代码吗?并添加你的foreach和doParallel代码。让我们看看:)刚刚意识到前面的答案有相同的概念
png(filename=str_c(p1,"/",cur,".png"),width = 800,  height =  600)
plotIt(times,result)
dev.off()