如何在R中永久更改.libPaths()?

Kou*_*ndy 30 r

每当我使用该.libPaths()函数更改库路径顺序时,如果我重新启动R,它将恢复为默认值.如何永久更改此值?我正在研究Linux计算集群(我没有管理员权限)所以,我想永久地将我的本地库添加到R.

我每次开始做R都必须这样做

.libPaths(c("/home/...","/home...","/local/library"))
Run Code Online (Sandbox Code Playgroud)

Dir*_*tel 16

为了完整性,我无法在评论中显示:

1)所有带有R包的Debian和Ubuntu系统的默认值:

edd@max:~$ R -q -e 'print(.libPaths())'
R> print(.libPaths())
[1] "/usr/local/lib/R/site-library" "/usr/lib/R/site-library" 
[3]            "/usr/lib/R/library"           
R> 
R> 
Run Code Online (Sandbox Code Playgroud)

2)我们可以通过修改来改变R_LIBS_SITE:

edd@max:~$ R_LIBS_SITE="/usr/lib/R/Library" R -q -e 'print(.libPaths())'
R> print(.libPaths())
[1] "/usr/lib/R/library"
R> 
R> 
Run Code Online (Sandbox Code Playgroud)

3)但是修改R_LIBS不会工作:

edd@max:~$ R_LIBS="/usr/lib/R/Library" R -q -e 'print(.libPaths())'
R> print(.libPaths())
[1] "/usr/local/lib/R/site-library" "/usr/lib/R/site-library" 
[3]            "/usr/lib/R/library"           
R> 
R> 
edd@max:~$ 
Run Code Online (Sandbox Code Playgroud)

请参阅help(Startup)完整详细的治疗方法.在Debian和Ubuntu上,我们将这三个目录设置为十年来的默认目录.通过R_LIBS_SITE此处设置,这是您需要在此处更改的变量.通常,您需要覆盖保存值的变量,您可能不知道事先是哪一个.

至于原始答案,在Debian和Ubuntu上我们使用该文件/etc/R/Renviron.作为help(Startup)详细信息,您可以设置任意数量的方法来永久地为您的启动更改它- 所有这些点适用于所有不同的操作系统:

  1. 更改系统文件,例如,Renviron或者Renviron.site 如果您具有适当的权限
  2. 否则改变每用户文件 ~/.Renviron
  3. 另外,改变环境变量R_LIBS或者R_LIBS_USER或者R_LIBS_SITE在系统级,如果你有适当的权限
  4. 否则改变变量R_LIBSR_LIBS_USERR_LIBS_SITE在用户级别.
  5. 最后,调用.libPaths(...new path to be added here...)您的R启动文件,例如.Rprofile.

请参阅help(Startup)更全面的讨论.

  • 我并不是说它很容易阅读,因为有_很多_移动部分需要考虑,而且它确实做到了这一点。但它很全面。这就是我所说的全部。 (2认同)

Fer*_*oao 10

在R安装文件夹中找到该Rprofile文件(无点)

find -name Rprofile

#Getting something like:
#lib/R/library/base/R/Rprofile
Run Code Online (Sandbox Code Playgroud)

打开文件并搜索:

invisible(.libPaths(c(unlist(strsplit(Sys.getenv("R_LIBS"), ":")),
                      unlist(strsplit(Sys.getenv("R_LIBS_USER"), ":") )
                      )))
Run Code Online (Sandbox Code Playgroud)

评论其他路径并添加您想要的路径

invisible(.libPaths(c(#unlist(strsplit(Sys.getenv("R_LIBS"), ":")),
                      #unlist(strsplit(Sys.getenv("R_LIBS_USER"), ":") )
                      "/home/users/username/R/4.0.1/lib/R/library" # desired path
                      )))
Run Code Online (Sandbox Code Playgroud)

这也很有用:(对于.bashrc文件)

export R_LIBS='/home/users/username/R/4.0.1/lib/R/library'
export R_LIBS_USER='/home/users/username/R/4.0.1/lib/R/library'
Run Code Online (Sandbox Code Playgroud)


Hac*_*k-R 5

2个主要解决方案:

  1. .Rprofile你可以留下设置的代码 .libPaths()

  2. 只需将适当的环境变量(例如R_LIBS在 Windows 或R_LIBS_SITE=Linux 等中)设置为您喜欢的任何内容,例如

     R_LIBS=C:/R/Library 
    
    Run Code Online (Sandbox Code Playgroud)