我已经在 $R_LIBS_USER
中安装了几个库。不幸的是,所有这些库都无法加载到 PL/R
中。看来我只能加载 $R_LIBS_SITE
中的库。
是否可以通过 PL/R
的一些配置直接使用 $R_LIBS_USER
中的库?
PostgreSQL 的登录用户是我当前的用户,已被授予 super 用户。这是 SELECT * FROM plr_environ();
的结果:
PG_GRANDPARENT_PID | 29232
PWD | /var/lib/postgresql
PGLOCALEDIR | /usr/share/locale
LANG | en_US.UTF-8
PGSYSCONFDIR | /etc/postgresql-common
SHLVL | 1
PGDATA | /var/lib/postgresql/9.3/main
_ | /usr/lib/postgresql/9.3/bin/postgres
LC_COLLATE | en_US.UTF-8
LC_CTYPE | en_US.UTF-8
LC_MESSAGES | en_US.UTF-8
LC_MONETARY | C
LC_NUMERIC | C
LC_TIME | C
R_HOME | /usr/lib/R
R_PLATFORM | x86_64-pc-linux-gnu
R_PAPERSIZE_USER | a4
R_PAPERSIZE | letter
R_PRINTCMD | /usr/bin/lpr
R_RD4PDF | times,inconsolata,hyper
R_TEXI2DVICMD | /usr/bin/texi2dvi
R_GZIPCMD | /bin/gzip
R_UNZIPCMD | /usr/bin/unzip
R_ZIPCMD | /usr/bin/zip
R_BZIPCMD | /bin/bzip2
R_BROWSER | xdg-open
EDITOR | vi
PAGER | /usr/bin/pager
R_PDFVIEWER | /usr/bin/xdg-open
LN_S | ln -s
MAKE | make
SED | /bin/sed
TAR | /bin/tar
R_SYSTEM_ABI | linux,gcc,gxx,gfortran,?
R_LIBS_USER | ~/R/x86_64-pc-linux-gnu-library/3.2
R_LIBS_SITE | /usr/local/lib/R/site-library:/usr/lib/R/site-library:/usr/lib/R/library
R_SESSION_TMPDIR | /tmp/RtmpB5KlAx
(37 rows)
最佳答案
我找到了一个解决方案可以临时设置lib的搜索路径。
CREATE OR REPLACE FUNCTION r_libpaths() RETURNS text[] AS ' .libPaths(‘xxxxx’)
' LANGUAGE plr;
select r_libpaths();
这里,'xxx'是库的新路径。欢迎任何永久修改它的建议。
它在我的笔记本电脑上工作,但在我公司的虚拟机上再次失败。后面我会贴上这个环境的sessioninfo。
我终于找到了我的主目录对其他用户没有读取权限的原因。它可以通过 chmod 命令修复。然后,PL/R 可以从 R_LIBS_USER 加载库。
关于r - 如何在 plr(PostgreSQL R 扩展)中从 R_LIBS_USER 加载 R 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30881888/