253

我在 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

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

install.packages("zoo", lib="C:/software/Rpackages")

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

library("zoo", lib.loc="C:/software/Rpackages")

所有这一切都很好,但我想看看我是否可以C:/software/Rpackages以某种方式添加到库路径中,因此不必每次都输入它。

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

.libPaths("C:/software/Rpackages")

但是,在这样做并启动 RStudio 之后,这是我得到的输出

> .libPaths()
[1] "C:/Program Files/R/R-2.15.2/library" "C:/Program Files/RStudio/R/library" 

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

注意:如果我启动 RStudio,该.libPaths()命令似乎可以正常工作

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

这不是很奇怪吗?

4

15 回答 15

266

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

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

Variable name: R_LIBS_USER 
Variable value: C:/software/Rpackages  

如果由于某种原因您无法访问控制面板,您可以尝试rundll32 sysdm.cpl,EditEnvironmentVariables从 Windows 上的命令行运行并从那里添加环境变量。

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

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

于 2013-10-29T15:43:23.120 回答
201

我通常会尝试将所有包保存在一个库中,但是如果您想添加一个库,为什么不将新库(必须已经存在于您的文件系统中)附加到现有库路径中呢?

.libPaths( c( .libPaths(), "~/userLibrary") )
 # obviously this would need to be a valid file directory in your OS
 # min just happened to be on a Mac that day

或者(这将使 userLibrary 成为放置新包的第一个位置):

.libPaths( c( "~/userLibrary" , .libPaths() ) )

然后我得到(至少在我最初写这篇文章时):

> .libPaths()
[1] "/Library/Frameworks/R.framework/Versions/2.15/Resources/library"
[2] "/Users/user_name/userLibrary"  

.libPaths函数与大多数其他非图形函数有点不同。它通过副作用起作用。Sys.getenv报告和更改 R 环境变量的函数Sys.setenv已分开,但.libPaths可以报告或更改其目标。

有关 R 启动过程的信息可以在?Startup帮助页面上阅读,RStudio 材料位于: https: //support.rstudio.com/hc/en-us/articles/200549016-Customizing-RStudio

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

由于Sys.getenv()返回 R 进程的当前系统环境,您可以通过以下方式查看库和其他路径:

Sys.getenv()[ grep("LIB|PATH", names(Sys.getenv())) ]

对存储和访问包很重要的两个是(现在在 Linux 机器上有所不同):

R_LIBS_SITE                          /usr/local/lib/R/site-library:/usr/lib/R/site-library:/usr/lib/R/library
R_LIBS_USER                          /home/david/R/x86_64-pc-linux-gnu-library/3.5.1/
 
于 2013-03-02T04:39:33.220 回答
27

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

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

> getwd()
[1] "C:/Users/me/Documents"

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

.libPaths("C:/software/Rpackages")

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

> .libPaths()
[1] "C:/software/Rpackages"               "C:/Program Files/R/R-2.15.2/library"
[3] "C:/Program Files/RStudio/R/library"
于 2013-03-04T06:33:38.910 回答
22

https://superuser.com/questions/749283/change-rstudio-library-path-at-home-directory

编辑 ~/.Renviron

R_LIBS_USER=/some/path
于 2017-12-14T05:45:00.387 回答
11

我在这里找到了我认为的解决方案(感谢 SFU 的 Carl Schwarz)添加一个永久识别的个人库(您不必在每个会话中定义它)无论是使用 R 还是 Rstudio,并且 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. 在您的“主”或“用户名”目录中创建一个名为Rlibs的文件夹

  2. 启动终端应用程序

  3. 类型:echo "R_LIBS=~/Rlibs"> .Renvrion确保大小写匹配。

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

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

启动 R/Rstudio 并输入.libPaths(),您应该会看到您的个人图书馆的新路径。

于 2017-05-04T14:01:38.150 回答
8

如果您没有管理员权限,打开Rprofile.site位于\R-3.1.0\etc中的 -file并添加:

.First <- function(){
  .libPaths("your path here")
}

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

于 2014-04-14T13:46:01.067 回答
5

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

touch ~/.Renviron
echo "R_LIBS_USER=/custom/path/in/absolute/form" >> ~/.Renviron
于 2019-11-29T13:32:49.020 回答
4

我真的很难理解这一点。当我上次重新安装我的操作系统和 Rstudio 时,gorkypl 在上面给出了正确的解决方案,但是这一次,设置我的环境变量并没有解决。

卸载 R 和 Rstudio,创建目录 C:\R 和 C:\Rstudio 然后重新安装两者。

将 R_LIBS_USER 用户变量定义到您喜欢的目录(根据 gorkypl 的回答)并重新启动您的机器以加载用户变量。打开 Rstudio,错误应该消失了。

您还可以使用Sys.setenv()将 R_LIBS_USER 修改为您的替代库的路径,这更容易并且不需要重新启动计算机。

要查看 R_LIBS_USER 设置为: ?Sys.getenv()

读书help(Startup)有用。

于 2015-01-07T16:40:28.610 回答
4

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

.libPaths("C:/R/libs")
于 2018-11-14T11:12:11.720 回答
2

如果在安装新版本的 R 或通过任何其他方式更改了默认包库,则可以在以下命令的帮助下附加两个库以使用所有包。获取现有库路径:

.libPaths()

现在,设置现有路径和旧路径:

.libPaths(c(.libPaths(), "~/yourOldPath"))

希望能帮助到你。

于 2016-03-14T07:07:37.007 回答
1

我读了自述文件。他们提到在命令行中使用 .libPaths() 来检查存在哪些路径。我之前有 2 个库路径。当我在我想要的地方使用命令 .libpath("C:/Program Files/R/R-3.2.4revised/library") 时,它改变了库路径。当我再次在命令行输入 .libPaths() 时,它显示了正确的路径。希望这可以帮助

于 2016-07-08T04:11:22.270 回答
0

由于这里的大多数答案都与 Windows 和 Mac OS 相关,(考虑到我也为此苦苦挣扎)我决定在我的Arch Linux设置上发布帮助我解决这个问题的过程。

步骤1:

  • 对您的系统(例如ANGRYSearch)进行全局搜索以查找术语Renviron(这是设置用户库设置的配置文件)。
  • 它应该只返回以下目录路径中的两个结果:
    1. /etc/R/
    2. /usr/lib/R/etc/
      注意:存储在 1 和 2(上图) Renviron配置文件相互热链接(这意味着当正在编辑的文件为已保存-[您还需要sudo保存文件编辑后的权限])

第2步:

  • 导航到第一个目录路径 ( /etc/R/) 并Renviron使用您喜欢的文本编辑器打开文件。
  • Renviron文件中搜索R_LIBS_USER标记并将大括号部分中的文本更新为所需的目录路径。

    示例:
    ...更改自原始条目):
    R_LIBS_USER=${R_LIBS_USER-'~/R/x86_64-pc-linux-gnu-library/4.0'}
    ...更改为您想要的条目):
    R_LIBS_USER=${R_LIBS_USER-'~/Apps/R/rUserLibs'}

第 3 步:

  • 保存Renviron您刚刚编辑的文件...完成
于 2020-09-25T11:15:51.323 回答
0
getwd()
# [1] "C:/Users/..../software/My R studio"

用双引号复制上面的链接

.libPaths(new="C:/Users/..../software/My R studio")

您的默认路径将更改以安装包

于 2016-02-07T13:48:06.943 回答
0

如果您想永久更改库路径(每次进入 R 时不调用 .libPath() ,这对我有用:

  1. 在您的主目录下创建 .Rprofile。(~/.Rprofile)

  2. 输入 .libPaths(c( .libPaths(), "your new path" )) .Rprofile 文件,保存。

  3. 打开 R(任何目录)并检查,只需键入.libPaths(),即可发现您的 libaray 路径已更新!

于 2019-07-03T19:12:29.633 回答
-2

我正在研究这个,因为 R 在安装到默认位置时遇到问题,而只是将包放入临时文件夹。它原来是 Mcaffee Endpoint Security 的最新更新,它显然与 R 存在问题。您可以在安装软件包时禁用威胁防护,它会正常工作。

于 2017-09-18T23:15:47.683 回答