2012-09-14 247 views
2

我現在正在使用org.rosuda.REngine.Rserve使用C#使用R的工具。我有一個特別的問題,當我運行在C#客戶端下面的代碼:使用REngine.Rserve時出現錯誤()錯誤

c.eval("pdf(file=\"plots.pdf\", width=11, height=8.5)"); 
c.eval("plot(1,2)"); 

錯誤occour該說

Error in plot.new():cannot open file '', reason No such file or directory 

但是我檢查了文件「plots.pdf」已是通過「pdf ..」功能成功創建。在R語義中,連續的plot()將這個時間輸出到由「pdf(...)」函數打開的活動設備,即「plots.pdf」。但我很困惑,爲什麼錯誤表明文件是''。 我在Linux服務器端使用R-2.15.0和Rserve-1.7.0。 我很想看到你的回覆。 非常感謝。

+0

我剛剛遇到問題,看起來完全一樣。只是想知道你是否有機會在這方面取得進展? – Datageek

+2

我記得我通過重新啓動Rserve引擎並每次在「pdf(...); plot(...)」語句後調用c.eval(「dev.off()」)來解決此問題。看來這個錯誤是由於上次沒有正確關閉設備造成的。如果你仍然發現一些問題,你可以嘗試c.voidEval而不是c.eval。我發現一些r語句無法在eval函數中正確運行。希望我的回答是有幫助的。 – fishfish311

回答

0

試試這個代碼: -

c.eval("dev.off()") 
+0

這也是在評論中提到的,不是嗎? – rene

0

在名爲(null).1001.1001


相關答案文件夾 Cannot open file '', reason No such file or directory 建議使用file.path作爲替代paste與平臺無關創建文件名路徑分隔符。

評論建議dev.off()。我與graphics.off()有更好的運氣。區別在於dev.close()關閉當前設備,graphics.off()關閉所有打開的設備。

但我的解決方案竟然是 https://askubuntu.com/questions/721485/what-is-folder-null-1001-1001 我發現一個名爲(null).1001.1001一個神祕的文件夾(Rserve運行的UID 1001,Linux上的GID 1001)。我在會議開始時創建了這個文件夾,我很開心。這個文件夾的存在似乎有助於我的情況,但我不知道(還!)那個文件夾是什麼。