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

时间:2011-08-20 02:22:09

标签: 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"

(注意:当我从我的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定制吗? (为什么?)提前致谢。

2 个答案:

答案 0 :(得分: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
     

此变量支持与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
     

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

     

希望能够解决问题,并且可以将事情配置为   你想。如果您有其他问题,或者如果没有,请告诉我们   按照描述工作。

     

J.J。

答案 1 :(得分:6)

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

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

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