我正在使用 R.NET 生成圖(使用ggplot),我想將這些圖以 PNG 格式保存在磁盤上。每當(dāng)我調(diào)用engine.Evaluate("ggsave('C:\path\to\file.png', myPlot)")程序突然中止并退出代碼 2 時,沒有任何內(nèi)容寫入磁盤;發(fā)生這種情況時不會顯示錯誤。png()也不可能使用或?qū)⒗L圖寫入文件pdf()。但是,此問題并非特定于ggplot,我也無法存儲通過本機plot函數(shù)生成的圖。我可以將問題縮小到包含ggsave()or png()/的pdf()行:執(zhí)行此行時,程序中止。因為我實際上可以看到由ggplot()和生成plot()的繪圖,所以繪圖本身似乎不是問題所在。您應(yīng)該能夠使用以下 C# 代碼重新創(chuàng)建我所描述的內(nèi)容:using RDotNet;namespace Test { class Program { static void Main(string[] args) { REngine.SetEnvironmentVariables(); REngine engine = REngine.GetInstance(); engine.Evaluate("png('D:\\Test.png')"); engine.Evaluate("plot(rnorm(1000))"); engine.Evaluate("dev.off()"); } }}顯然,這段代碼應(yīng)該沒有任何問題。跑步時png('D:\\Test.png')plot(rnorm(1000))dev.off()在 R 中,生成了一個圖并成功保存到 Test.png 中。我正在使用 .NET Framework 4.6.1、R.NET 1.7.0 和 R 3.4.2。我的計算機上沒有安裝 R,也沒有為 R 創(chuàng)建注冊表項 - 我只是按照此處所述使用 R DLL 。
2 回答

蕪湖不蕪
TA貢獻(xiàn)1796條經(jīng)驗 獲得超7個贊
這并不是說你不能像你在回答中提到的那樣使用反斜杠。盡管正斜杠也可以解決您的問題,但我認(rèn)為如果我解釋其他解決方案,將來可能會有所幫助。
您必須兩次轉(zhuǎn)義反斜杠。
一次用于 C#,一次用于 R。
像這樣調(diào)用 Evaluate
engine.Evaluate("png('D:\\Test.png')");
將使用字符串調(diào)用R
引擎:"png('D:\\Test.png')"
,如果您評估它只是:png('D:\Test.png')。如果你在 R 中輸入它,你也會得到一個錯誤。
如果你想運行 R 命令png('D:\\Test.png')
,你必須轉(zhuǎn)義那個字符串,在轉(zhuǎn)義后它有兩個反斜杠變成:"png('D:\\\\Test.png')"
。

12345678_0001
TA貢獻(xiàn)1802條經(jīng)驗 獲得超5個贊
事實證明,圖像文件的路徑中不能有反斜杠。如果你想將圖像寫入磁盤上的文件,你必須使用正斜杠,例如而不是
engine.Evaluate("png('D:\\Test.png')");
利用
engine.Evaluate("png('D:/Test.png')");
也許這對其他人仍然有幫助。
- 2 回答
- 0 關(guān)注
- 137 瀏覽
添加回答
舉報
0/150
提交
取消