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

时间:2014-06-24 13:15:34

标签: r

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

每次开始R

时我都必须这样做
.libPaths(c("/home/...","/home...","/local/library"))

4 个答案:

答案 0 :(得分:15)

为了完整性,我无法在评论中表明这一点:

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> 

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> 

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:~$ 

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

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

  1. 如果您拥有适当的权限,请更改RenvironRenviron.site 等系统文件
  2. 否则,请更改每用户文件~/.Renviron
  3. 或者,如果您具有适当的权限,则在系统级更改环境变量R_LIBSR_LIBS_USERR_LIBS_SITE
  4. 否则,请在用户级别更改变量R_LIBSR_LIBS_USERR_LIBS_SITE
  5. 最后,在您的R启动文件中调用.libPaths(...new path to be added here...),例如在.Rprofile
  6. 请参阅help(Startup)进行更全面的讨论。

答案 1 :(得分:3)

2个主要解决方案:

  1. user has_many adverts中,您可以留下设置advert belongs_to user

  2. 的代码
  3. 只需将适当的环境变量(如Windows中的.Rprofile或Linux中的.libPaths()等)设置为您喜欢的任何内容,例如

    R_LIBS

答案 2 :(得分:2)

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

find -name Rprofile

#Getting something like:
#lib/R/library/base/R/Rprofile

打开文件并搜索:

invisible(.libPaths(c(unlist(strsplit(Sys.getenv("R_LIBS"), ":")),
                      unlist(strsplit(Sys.getenv("R_LIBS_USER"), ":") )
                      )))

注释其他路径并添加所需的路径

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
                      )))

这也可能有用:(对于.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'

答案 3 :(得分:0)

在Mac上,我发现在“全新”安装中没有用户库,并且所有软件包均安装在特定于版本的系统库中。最终,将创建一个用户库(可能是偶然地或通过RStudio提示符),并将其设置为默认位置以供将来安装软件包。因此,如果您不密切注意,则最终会在系统库中安装一些软件包,并在用户库中安装一些软件包。

用户库位于第一位,系统库位于第二位:

.libPaths()
> [1] "/Users/<username>/Library/R/3.6/library"                         
> [2] "/Library/Frameworks/R.framework/Versions/3.6/Resources/library"

我喜欢将所有内容都放在一个地方(系统库),因此(永久地)要执行以下操作:

在“终端”窗口中,在用户目录中创建一个.Rprofile文件:

nano ~/.Rprofile

在该文件中,添加以下R代码行:

.libPaths( c(.libPaths()[2], .libPaths()[1]) )

或者,添加类似的R代码行,但带有硬编码的路径:

.libPaths( c("/Library/Frameworks/R.framework/Versions/3.6/Resources/library", "/Users/<username>/Library/R/3.6/library") )

用您的实际用户名替换<username>。然后Ctrl-O(保存)并Ctrl-X(退出)该文件。

每条线都会切换上面列出的路径的顺序,因此路径[2](系统)为第一(默认),路径[1](用户)为第二。

重要的是,通过将这一行代码放入用户的.Rprofile中,它将在每次R启动时运行,并且您(希望)不必再为此担心。