【问题标题】:Plot() error when using REngine.Rserve使用 REngine.Rserve 时出现 Plot() 错误
【发布时间】:2012-09-14 02:43:33
【问题描述】:

我现在正在开发一个项目,该项目希望使用 org.rosuda.REngine.Rserve 来通过 C# 使用 R 的设施。当我在 C# 客户端运行以下代码时,我遇到了一个特殊问题:

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

出现错误提示

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。 我很想看到你的回复。 非常感谢。

【问题讨论】:

  • 我刚刚遇到了这个问题,看起来完全一样。只是想知道您是否有机会继续前进?
  • 我记得我通过重新启动 Rserve 引擎并在 "pdf(...); plot(...)" 之后每次调用 c.eval("dev.off()") 来解决这个问题陈述。好像是上次没有正确关闭设备造成的。如果您仍然发现一些问题,您可以尝试使用 c.voidEval 而不是 c.eval。我发现一些 r 语句无法在 eval 函数中正确运行。希望我的回答对您有所帮助。

标签: r plot rserve


【解决方案1】:

试试这个代码:-

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

【讨论】:

  • cmets里也提到了,不是吗?
【解决方案2】:

一个名为(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 在 Linux 上以 uid 1001、gid 1001 运行)。我在会话开始时创建了这个文件夹,我可以开始了。这个文件夹的存在似乎对我有帮助,但我不知道(还!)那个文件夹是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    相关资源
    最近更新 更多