На компьютерах (работает Fedora) по моей работе R-2.15 установлен по умолчанию. Я скачал R-3.0.2, потому что мне нужно несколько пакетов, которые доступны только для R 3.Звонок R из java - разная версия R
Когда я пытаюсь вызвать Rscript из Java с помощью Runtime.getRuntime().exec(command);
с командой является Строковый массив {"/path/to/Rscript/3-0" "name/of/script" "...args..."}
я получаю ошибку WARNING: ignoring environment value of R_HOME
и говорит что он не может загрузить необходимые пакеты. Когда я запускаю ту же самую команду в терминале, она работает хорошо.
В чем разница между вызовом через java и вызовом на консоли. И как я могу это исправить?
EDIT 1: когда я запускаю мой локально установленный R-3 версии, libPaths
возвращает
> .libPaths()
[1] "/home/<homedir>/.bin/R-3.0.2/library"
Но когда я называю Rscript от Java, libPaths
возвращает
[1] "/home/<homedir>/R/x86_64-redhat-linux-gnu-library/2.15"
[2] "/usr/lib64/R/library"
[3] "/usr/share/R/library"
[4] "/home/<homedir>/.bin/R-3.0.2/library"
Проблема, кажется, что Java добавляет переменные среды, которые сообщают R
для загрузки пакетов из установки 2.15. Как я могу предотвратить это?
EDIT 2: Когда я перечислить все переменные окружения не используя метод System.getenv();
ничего R
о связанных показан, то же самое имеет место, когда я список переменных среды, используя printenv
в терминале. Но когда я вызываю Sys.getenv
в R, переменные R_HOME, R_LIBS, ... определены. Как они определены?
Это будет намного легче диагностировать, если вы предоставите воспроизводимый пример. Какова ценность 'R_HOME'? Что содержит ваш скрипт? Где библиотеки в каждом случае (что возвращает '.libPaths()')? Вы уверены, что используете ту же версию R в обоих случаях (что возвращает 'version')? –
Я добавил информацию о libPaths. Вы правы, это, кажется, проблема ... Но как я могу это исправить? – Jonas