JRI可以在Vista上访问用户安装的软件包吗?

时间:2010-12-06 10:11:58

标签: r rjava jri

我开发了一个使用JRI来使用ptw包的Java应用程序。

在Linux(Ubuntu 10.04,R 2.10.1,JRI 0.5.0)上运行正常。

但是,在Vista(R 2.12.0,JRI 0.5.0)上,当应用程序评估“library(ptw)”时,会发生以下错误:

库中的错误(ptw):找不到对象'ptw'

当我从Vista命令行运行R并发出“library(ptw)”命令时,没有问题。

如果我将ptw软件包从我的%USERPROFILE%\ Documents \ R \ win-library复制到%R_HOME%\ library,则问题就会消失。但是,我不希望我的用户必须这样做,事实上,有些人可能没有这样做的许可。

因此,如何让JRI调用可以访问用户已在其中安装的软件包的R-Engine %USERPROFILE%\文件\ r \双赢的图书馆吗?

我在r-help邮件列表上也asked,但没有快乐。

我知道library()函数的 libloc 参数,但我更喜欢一些不那么脆弱的东西,即自动而不是需要配置......

3 个答案:

答案 0 :(得分:2)

如果位置不同于默认位置,则应在Rprofile.site文件中提及它们,其中使用.libPaths()或设置.Library.site变量。检查您是否可以在R版本的Rprofile.site文件中找到它,让您的应用程序打印函数.libPaths()的输出。

据我所知(但我可能错了),JRI使用Rserve,它不会以经典的方式启动R.我怀疑在Windows上这会以某种方式忘记Rprofile.site(事实上这将是一个bug)。看不出为什么它不起作用的另一个原因,但我不是专家。

一种解决方案是:

  • 在开头使用Rprofile.site。
  • 或向.libPaths()添加任何可能的位置(请参阅?.libPaths
  • 或在脚本中自行设置.Library.site变量

您可能想要检查问题是否仍然存在于Windows 7上,因为我注意到某些程序在使用Vista时尝试连接到R的问题行为,而相同的版本在Windows 7上运行正常。

答案 1 :(得分:2)

%USERPROFILE%\ Documents \ R \ win-library是一个“非标准”库位置,尽管它在用户是非管理员时自动添加到.libPaths()。

启动JRIEngine后,您可以手动添加库位置。

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

答案 2 :(得分:2)

感谢JorisIan的评论,我发现在运行应用程序之前明确设置 R_LIBS_USER 环境变量解决了这个问题。

无论出于何种原因,这只是Vista(与Linux相比)所必需的。在两个系统上,Rprofile.site文件都是空模板。