Может ли JRI получить доступ к установленным пользователем пакетам в Vista?

Я разработал приложение Java, использующее JRI для использования пакета ptw.

В Linux (Ubuntu 10.04, R 2.10.1, JRI 0.5.0) работает нормально.

Однако в Vista (R 2.12.0, JRI 0.5.0), когда приложение оценивает «библиотека (ptw)», возникает следующая ошибка:

Ошибка в библиотеке (ptw): объект «ptw» не найден

Когда я запускаю R из командной строки Vista и ввожу команду «library(ptw)», проблем нет.

Если я скопирую пакет ptw из моей %USERPROFILE%\Documents\R\win-library в %R_HOME%\library, проблема исчезнет. Однако я не хочу, чтобы мои пользователи делали это, на самом деле у некоторых может не быть на это разрешения.

Следовательно, как я могу заставить JRI вызывать R-Engine, у которого есть доступ к пакетам, установленным пользователем в его %USERPROFILE%\Documents\R\win-library?

Я также спрашивал на р- список рассылки помощи, но не радость.

Я знаю о параметре libloc для функции library(), но я бы предпочел что-то менее хрупкое, то есть автоматическое, а не требующее настройки...


person Chris Pudney    schedule 06.12.2010    source источник


Ответы (3)


Если расположение отличается от значения по умолчанию, оно должно быть указано в файле Rprofile.site, где либо используется .libPaths(), либо устанавливается переменная .Library.site. Проверьте, можете ли вы найти это в файле Rprofile.site вашей версии R, чтобы ваше приложение распечатало вывод функции .libPaths().

Насколько я знаю (хотя могу ошибаться), JRI использует Rserve, который не запускает R классическим способом. Я подозреваю, что в Windows это каким-то образом забывает о Rprofile.site (что на самом деле было бы ошибкой). Не вижу другой причины, по которой это не сработает, но я не эксперт.

Одним из решений является:

  • источник Rprofile.site в начале.
  • или добавьте любое возможное местоположение в .libPaths() (см. ?.libPaths)
  • или установить переменную .Library.site самостоятельно в скрипте

Возможно, вы захотите проверить, сохраняется ли проблема в Windows 7, потому что я заметил проблемное поведение некоторых программ, пытающихся подключиться к R при использовании Vista, тогда как та же версия отлично работает в Windows 7.

person Joris Meys    schedule 06.12.2010

%USERPROFILE%\Documents\R\win-library — это «нестандартное» расположение библиотеки, несмотря на то, что оно автоматически добавляется в .libPaths(), когда пользователь не является администратором.

После запуска JRIEngine вы можете добавить расположение библиотеки вручную.

jriengine.parseAndEval(".libPaths(<the directory>)");

person Ian Fellows    schedule 06.12.2010

Благодаря комментариям Йориса и Ian Я обнаружил, что явная установка переменной среды R_LIBS_USER перед запуском моего приложения решила проблему.

По какой-то причине это необходимо только в Vista (по сравнению с Linux). В обеих системах файл Rprofile.site является пустым шаблоном.

person Chris Pudney    schedule 07.12.2010
comment
Это тоже способ сделать это. +1 за ссылку на R_LIBS_USER, я забыл упомянуть об этом. - person Joris Meys; 10.12.2010