R Script не может прочитать файл .Rda при выполнении из Java

Я новичок в Rscript, поэтому, пожалуйста, потерпите меня, мне нужно выполнить скрипт R (написанный другим разработчиком) из java, и для этого я использую Renjin. Файл сценария R и другие необходимые файлы находятся на classpath, то есть в папке ресурсов.

Для этого я загружаю Rscript из пути к классам, и он успешно загружается, а Rscript пытается загрузить файл abc.Rda внутри, который также присутствует в пути к классам (параллельно со сценарием R), код для этого ниже

load('abc.Rda')

Но когда я пытаюсь выполнить скрипт, он выдает исключение, как показано ниже:

Не удалось прочитать из «file:///D:/data/{project-dir}/abc.Rda», поскольку это не файл.

Пожалуйста, предложите, где я делаю ошибку.


person Apollo    schedule 29.06.2016    source источник
comment
Вы пытались указать абсолютный путь к файлу для работы?   -  person Halil İbrahim Oymacı    schedule 29.06.2016
comment
Да пробовал, но проблема та же   -  person Apollo    schedule 29.06.2016
comment
Я пробовал различные тесты, но не смог выдать никаких ошибок: одинарные, двойные кавычки, расширение файла с заглавной буквы, когда фактическое — нижний регистр и т. д. save(d, file='abc.rda') load('abc.Rda')   -  person Bobby    schedule 04.07.2016
comment
Не могли бы вы попробовать load('abc.Rda', verbose = TRUE), чтобы увидеть, дает ли это больше подсказок? Кроме того, возможно, вы могли бы изучить кодировку символов: stackoverflow.com/questions/34024654/   -  person Bobby    schedule 05.07.2016
comment
Очевидно, что {project-dir} не расширяется должным образом. Поскольку R не имеет понятия о проекте, это, вероятно, связано с тем, что какая-то IDE ведет себя не так, как ожидалось. Возможно RStudio?   -  person IRTFM    schedule 08.07.2016
comment
Я попытался выполнить сценарий R, указав полностью классифицированное имя пути, но ошибка была такой же.   -  person Apollo    schedule 08.07.2016
comment
Насколько я знаю, Renjine не реализует все функции R (по крайней мере, версия, которую я использовал полтора года назад), поэтому, возможно, код R внутри файла rda не может быть выполнен (хотя ошибка относится к пути к файлу)   -  person Angelo Immediata    schedule 08.07.2016
comment
Предоставьте минимально воспроизводимый R-скрипт в открытом вопросе.   -  person coatless    schedule 10.07.2016


Ответы (1)


Я не уверен, почему использование абсолютного пути не сработало: возможно, скрипт неправильно вызывает setwd(dir='/bad/{project-dir}') где-то раньше?

Renjin фактически выполняет операции с файловой системой через Виртуальную файловую систему Apache (VFS). Поэтому, если вам конкретно нужен ресурс в пути к классам, вы можете использовать протокол «res:», например:

load('res:com/acme/mypackage/abc.Rda')

Это должно работать независимо от того, находится ли файл на самом деле в файловой системе или упакован как часть jar или другого архива.

person akbertram    schedule 08.07.2016