Может ли JRI получить доступ к установленным пользователем пакетам в Vista? - PullRequest
2 голосов
/ 06 декабря 2010

Я разработал приложение 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 \ беспроигрышная библиотека?

Я также спросил в списке рассылки r-help, но не радости.

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

Ответы [ 3 ]

2 голосов
/ 06 декабря 2010

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

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

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

2 голосов
/ 07 декабря 2010

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

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

2 голосов
/ 06 декабря 2010

Если местоположения отличаются от местоположений по умолчанию, они должны быть указаны в файле 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.

...