Plot() error when using REngine.Rserve

2019-01-27 02:49发布

问题:

I'm now work on a project which wants to use org.rosuda.REngine.Rserve to use facilities of R by C#. I have a particular problem that when I run the following code in C# client side:

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

An error occour which said

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

But I checked that the file "plots.pdf" has already been created successfully by "pdf.." function. In R semantics, the successive plot() will output figure to the active device opened by the "pdf(...)" function, i.e. "plots.pdf" this time. But I'm very confused that why the error indicated that the file is ''. I use R-2.15.0 and Rserve-1.7.0 in linux server side. I'm eager to see your response. Thanks a lot.

回答1:

Try this code :-

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


回答2:

A folder named (null).1001.1001


Related answer at Cannot open file '', reason No such file or directory suggests using file.path as a alternative to paste for creating filenames with platform-independent path separators.

Comments suggest dev.off(). I had better luck with graphics.off(). The difference is that dev.close() closes the current device, graphics.off() closes all open devices.

But my solution turned out to be https://askubuntu.com/questions/721485/what-is-folder-null-1001-1001 I found a mysterious folder named (null).1001.1001 (Rserve is running as uid 1001, gid 1001 on Linux). I create this folder at the start of my session and I'm good to go. The presence of this folder seems to help in my case, but I don't know (yet!) what that folder is.



标签: r plot rserve