Ошибка Plot() при использовании REngine.Rserve
Сейчас я работаю над проектом, который хочет использовать org.rosuda.REngine.Rserve для использования возможностей R в C#. У меня есть особая проблема, когда я запускаю следующий код на стороне клиента 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". Но я очень смущен тем, почему ошибка указала, что файл ''. Я использую R-2.15.0 и Rserve-1.7.0 на стороне сервера Linux. Я с нетерпением жду вашего ответа. Большое спасибо.
2 ответа
Папка с именем (null).1001.1001
Связанный ответ в Не могу открыть файл '', причина Нет такого файла или каталога, предлагающего использовать 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, gid 1001 в Linux). Я создаю эту папку в начале своей сессии, и я готов к работе. Наличие этой папки, кажется, помогает в моем случае, но я не знаю (пока!), Что это за папка.