使用Rprofile.site中的.libPaths更改R默认库路径无法正常工作

I L*_*ode 186 r library-path rstudio r-faq

我在Windows上运行R,而不是管理员.当我安装包时,以下命令不起作用:

> install.packages("zoo")
Installing package(s) into ‘C:/Program Files/R/R-2.15.2/library’
(as ‘lib’ is unspecified)
Warning in install.packages :
  'lib = "C:/Program Files/R/R-2.15.2/library"' is not writable
Run Code Online (Sandbox Code Playgroud)

要安装软件包,我必须指定一个库位置:

install.packages("zoo", lib="C:/software/Rpackages")
Run Code Online (Sandbox Code Playgroud)

要加载包,我还必须指定库位置:

library("zoo", lib.loc="C:/software/Rpackages")
Run Code Online (Sandbox Code Playgroud)

所有这一切C:/software/Rpackages都没问题,但我想知道是否可以以某种方式添加到库路径,因此不必每次都输入它.

当我在网上搜索时,我发现一种方法是编辑Rprofile.site文件并添加行

.libPaths("C:/software/Rpackages")
Run Code Online (Sandbox Code Playgroud)

但是,在执行此操作并启动RStudio之后,这就是我得到的输出

> .libPaths()
[1] "C:/Program Files/R/R-2.15.2/library" "C:/Program Files/RStudio/R/library" 
Run Code Online (Sandbox Code Playgroud)

.libPaths我加入命令Rprofile.site似乎并没有有任何影响!为什么会这样?或者更重要的是,如何解决问题以便我可以在不输入库位置的情况下安装和加载包?

注意:如果我启动RStudio,.libPaths()命令似乎按预期工作

.libPaths("C:/software/Rpackages")
> .libPaths()
[1] "C:/software/Rpackages"               "C:/Program Files/R/R-2.15.2/library"
Run Code Online (Sandbox Code Playgroud)

这不奇怪吗?

Paw*_*ian 192

正确的解决方案是将环境变量设置R_LIBS_USER为所需库文件夹的文件路径的值,而不是让RStudio识别Rprofile.site文件.

R_LIBS_USER在Windows中设置环境变量,请转到控制面板(系统属性 - >高级系统属性 - >环境变量 - >用户变量)到所需的值(库文件夹的路径),例如

Variable name: R_LIBS_USER 
Variable value: C:/software/Rpackages  
Run Code Online (Sandbox Code Playgroud)

设置R_LIBS_USER将确保库首先显示在.libPaths()中,无论是直接启动RStudio还是右键单击文件并"打开方式"启动RStudio.

如果始终通过单击RStudio快捷方式启动RStudio,则Rprofile解决方案可以正常工作.在这种情况下,将默认工作目录设置为包含Rprofile的目录就足够了.单击文件以启动RStudio时,Rprofile解决方案不起作用,因为这会将工作目录更改为远离默认工作目录.

  • 绝对是正确的解决方案.唯一的问题是如果您的用户不是管理员(可能是您开始遇到此问题的情况),您必须通过控制面板 - >用户帐户 - >用户帐户 - >更改我的环境来更改您的环境变量变量. (11认同)
  • 当然,只需将它们设置为shell变量(在bash中,您可以编辑`.bash_profile`和/或`.bashrc`).请看这里:http://unix.stackexchange.com/questions/117467/how-to-permanently-set-environmental-variables只为当前会话设置这些,只需在控制台中输入`export R_LIBS_USER ='directory_of_your_choice'` (4认同)
  • 同意正确的解决方案! (2认同)
  • 我没有通过控制面板设置变量,而是修改了Rprofile文件中R_LIB_USER的默认值。这里是解决方案:我想出了一种类似的方法,该解决方案作为对此问题的解决方案提供:http://stackoverflow.com/questions/31707941/how-do-i-change-the-default-library-path -r包 (2认同)

42-*_*42- 157

我通常会尝试将所有软件包保存在一个库中,但是如果要添加库,为什么不将新库附加到现有库中:

.libPaths( c( .libPaths(), "~/userLibrary") )
Run Code Online (Sandbox Code Playgroud)

然后我得到:

.libPaths( c( "~/userLibrary" , .libPaths() ) )
Run Code Online (Sandbox Code Playgroud)

.libPaths功能与大多数其他非图形功能略有不同.它通过副作用起作用.功能Sys.getenvSys.setenv该报告并改变R环境变量已经分道扬镳,但.libPaths可以报告或改变其目标.有关R启动过程的信息可以在?Startup帮助页面阅读,并且有RStudio材料:https://support.rstudio.com/hc/en-us/articles/200549016-Customizing-RStudio

在您的情况下,似乎RStudio不尊重Rprofile.site设置,或者可能通过从其中一个RStudio默认值读取.Rprofile设置来覆盖它们.还应该提到的是,此操作的结果还会将调用内容附加到.Library.Library.site,这也是为什么RStudio(或任何其他IDE或网络安装)托管的R可能表现出不同行为的原因.

  • 我需要反转`c()`向量以确保新库转到自定义文件夹 (12认同)
  • 新路径实际上必须存在于文件系统中,否则不会添加到库路径中 (5认同)
  • 我做了这个并且它有效,但似乎每次我开始R都必须改变路径.对其他人来说这是一样的吗? (2认同)

I L*_*ode 21

我设法通过将代码放在.Rprofile默认工作目录中的文件来解决问题.

首先,我找到了默认工作目录的位置

> getwd()
[1] "C:/Users/me/Documents"
Run Code Online (Sandbox Code Playgroud)

然后我使用文本编辑器编写一个.Rprofile包含以下行的简单文件

.libPaths("C:/software/Rpackages")
Run Code Online (Sandbox Code Playgroud)

最后,当我开始R运行时,.libPaths()我得到了所需的输出:

> .libPaths()
[1] "C:/software/Rpackages"               "C:/Program Files/R/R-2.15.2/library"
[3] "C:/Program Files/RStudio/R/library"
Run Code Online (Sandbox Code Playgroud)

  • R从**HOME**目录中读取.Rprofile,而不是从**CURRENT**目录中读取.Rprofile. (3认同)
  • @John我相信我们说同样的话. (2认同)

Wha*_*len 11

我发现了什么,我认为是一个解决方案在这里(谢谢你,卡尔·施瓦茨在SFU)添加个人库,永久(你不必把它定义每个会话)认可Rstudio是否使用R或Rstudio,并把它作为默认在我的Mac机器上.我没有看到它在SO上明确列出,所以我总结了他们为Windows提供的步骤,然后是Mac.

对于Windows 7操作系统:

  1. 在您想要拥有个人库的驱动器上创建一个目录,例如C:\ User\Rlibs(或您有权访问的其他目录)

  2. 在Windows搜索栏中搜索/转到"编辑帐户的环境变量"以编辑控制面板设置

  3. 单击"环境变量"窗口中间的"新建..."

  4. 在"新建用户变量"窗口中,键入"变量名称"的R_LIBS,以及您创建的个人库目录的路径,例如C:\ User\Rlibs

  5. 单击"确定",您将在"用户变量"窗口中看到"变量/值"对

  6. 再次单击确定

现在,当您启动R(或Rstudio)并键入命令时,.libPaths()您应该看到您创建的个人库以及R系统库.

对于Mac:

  1. 在"Home"或"username"目录中,创建一个名为Rlibs的文件夹

  2. 启动终端应用程序

  3. 类型:echo "R_LIBS=~/Rlibs"> .Renvrion确保案例匹配.

  4. 键入ls -a以查看目录中的完整文件列表,该列表现在应包含.Renvrion

  5. 验证.Renviron文件是否已正确设置:more .Renviron

启动R/Rstudio并键入.libPaths(),您应该看到个人库的新路径.


sch*_*sie 8

如果您没有admin-rights,打开Rprofile.site位于\ R-3.1.0\etc中的-file 并添加:

.First <- function(){
  .libPaths("your path here")
}
Run Code Online (Sandbox Code Playgroud)

这会.libPath()在开始时直接评估命令


tza*_*bal 6

在 Ubuntu 上,更改用户默认库路径的推荐方法R_LIBS_USER是在文件中设置变量~/.Renviron

touch ~/.Renviron
echo "R_LIBS_USER=/custom/path/in/absolute/form" >> ~/.Renviron
Run Code Online (Sandbox Code Playgroud)


Séb*_*ski 5

只需将 R 库的默认文件夹更改为没有管理员权限的目录,例如

.libPaths("C:/R/libs")
Run Code Online (Sandbox Code Playgroud)