簡體   English   中英

R中的並行處理

[英]Parallel processing in R

我在R中有一個代碼,可以使用隨機森林算法對60個數據集進行分類和估計(使用回歸建模),並且在其末尾有一個圖來顯示數量如何隨時間變化。 我正在執行相同的離開程序,由於需要很長時間,因此我使用了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)是:

    plotIt = function(times,result)
    {
    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="output"
        ,xlim=c(min(times)/60,max(times)/60)
        ,ylim=c(0,1)
        ,"s"
        )
    points(t/60,result[length(result)],col="red")
    lines(c(min(times)/60,max(times)/60),c(0.5,0.5),lty=2)
    lines(c(0,0),c(0,1),lty=3)
    }

情節隨着時間的增加而增長。 隨着它的增長,我正在保存每個幀。 “ cur”代表幀號。 假設我的t值從1到50,我將有50幀,最后一幀顯示完成的圖。 因此,在我的路徑(p1)中,我將有50個圖(png文件)。

這個問題已經多次重復提出。 請僅保留一個實例。

就答案而言:代替下面的代碼,

filename=str_c(p1,"/",cur,".png")

您可以使用定義文件名

filename=paste(p1,"/",cur,".png",sep="")

我希望p1是文件的路徑。 如果您在path / 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方式將其發送到NULL設備,因此為什么您會得到一個空的繪圖

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM