9

当我从命令行运行 R 时:

> library(ggplot2)
...
> path.package('ggplot2')
[1] "/home/yang/R/x86_64-pc-linux-gnu-library/2.13/ggplot2"
> .libPaths()
[1] "/home/yang/R/x86_64-pc-linux-gnu-library/2.13"
[2] "/usr/local/lib/R/site-library"                
[3] "/usr/lib/R/site-library"                      
[4] "/usr/lib/R/library"                           
> Sys.getenv('R_LIBS_USER')
[1] "~/R/x86_64-pc-linux-gnu-library/2.13"

(注意:当我从 shell 中检查时,该环境变量实际上并不存在。)

但是从在同一个盒子上运行的 RStudio Server 并以同一用户身份登录后:

> path.package('ggplot2')
[1] "/home/yang/R/library/ggplot2"
> .libPaths()
[1] "/home/yang/R/library"              "/usr/local/lib/R/site-library"    
[3] "/usr/lib/R/site-library"           "/usr/lib/R/library"               
[5] "/usr/lib/rstudio-server/R/library"
> Sys.getenv('R_LIBS_USER')
[1] "/home/yang/R/library"

你能解释一下为什么默认情况下这些是不同的吗?这是 RStudio 定制吗?(为什么?)提前谢谢。

4

2 回答 2

8

从源头直接回答:

http://support.rstudio.org/help/discussions/questions/204-r-libpaths-difference-between-rstudio-and-command-line-r

你好呀,

是的,我们有一个自定义 R_LIBS_USER 设置,旨在使服务器更容易升级到新版本的 R,而不需要每个用户重命名他们的库目录和/或重新构建他们的包。这样,管理员就可以进行升级,而不必担心会破坏用户的工作环境(意识到这也可以通过编写为每个用户执行必要的重命名/重建的升级脚本来完成)。

完全同意这不一定在所有情况下都是可取的。您可以采取以下措施来解决它:

Rtudio 服务器 R_LIBS_USER 由 /etc/rstudio/rsession.conf 中的以下设置控制:

r-libs-user=~/R/library

此变量支持与 R_LIBS_USER 相同的通配符(如此处所述:http://stat.ethz.ch/R-manual/R-patched/library/base/html/libPaths.html ,因此您可以将其更改为以下内容使 RStudio 的行为就像控制台 R 一样:

r-libs-user=~/R/%p-library/%v

(请注意,我相信这是重现上面输出中显示的目录的正确语法,但您肯定需要仔细检查)

希望这可以解决问题,并且您可以根据需要进行配置。让我们知道您是否有其他问题,或者如果这与描述的不一样。

JJ

于 2011-08-24T08:01:34.293 回答
7

快速谷歌搜索让我来到这里:

http://support.rstudio.org/help/discussions/problems/868-how-to-configure-libpaths

所以看起来 RStudio 使用自己的库,设置在 /etc/rstudio/rsession.conf 中。为什么?谁知道。

于 2011-08-20T14:51:38.280 回答