R .libPaths()RStudio和命令行R之间的区别

Yan*_*ang 6 r rstudio

当我从命令行运行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"
Run Code Online (Sandbox Code Playgroud)

(注意:当我从我的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"
Run Code Online (Sandbox Code Playgroud)

你能解释为什么这些在默认情况下不同吗?这是RStudio定制吗?(为什么?)先谢谢.

Yan*_*ang 7

来源直接回答:

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
Run Code Online (Sandbox Code Playgroud)

此变量支持与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
Run Code Online (Sandbox Code Playgroud)

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

希望能够解决问题,并且可以根据需要配置内容.如果您有其他问题或者如果这不起作用,请告诉我们.

JJ


Spa*_*man 6

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

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

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