在Rprofile.site中使用.libPaths更改R默认库路径无效

286

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

我添加到 Rprofile.site.libPaths 命令似乎没有任何效果!为什么会这样?或者更重要的是,我该如何解决这个问题,以便在不输入库位置的情况下安装和加载包?
注意:如果我启动 RStudio,则 .libPaths() 命令似乎按预期工作。
.libPaths("C:/software/Rpackages")
> .libPaths()
[1] "C:/software/Rpackages"               "C:/Program Files/R/R-2.15.2/library"

这不奇怪吗?


你能详细说明一下 install.packages("zoo") 到底哪里出了问题吗?有错误信息吗? - joran
1
@joran 我在尝试 install.packages("zoo") 时添加了错误信息,但这并不是我的真正问题,我的问题是为什么 Rprofile.site 中的 .libPaths() 不起作用。 - I Like to Code
1
如果您使用RGui而不是R Studio,是否遇到了相同的问题? - Dason
7
为什么R的库路径默认为需要管理员权限的文件夹?用户的主目录不是更合理吗? - geotheory
将RStudio的库路径更改为主目录下的~/.Renviron文件中编辑R_LIBS_USER=/some/path。 - bowen.li
16个回答

1

我曾经遇到过同样的问题,然后我找到了this。如果你想创建另一个位置,c("C:/Users/mynewlocation") 也应该可以工作。正如这里所提到的,“你应该能够右键单击Rstudio.exe图标,点击属性,并选择一个选项,始终以管理员身份运行Rstudio。确保每次打开Rstudio时使用相同的图标。”

    myPaths <- .libPaths()   # get the paths
myPaths <- c(myPaths[2], myPaths[1])  # switch them
.libPaths(myPaths)  # reassign them

1

我阅读了自述文件。其中提到可以在命令行中使用.libPaths()来检查路径。我之前有两个库路径。当我在想要的位置使用命令.libpath("C:/Program Files/R/R-3.2.4revised/library")时,它改变了库路径。当我再次在命令行中键入.libPaths()时,它显示了正确的路径。希望这能帮到你。


0
getwd()
# [1] "C:/Users/..../software/My R studio"

复制上面的链接,使用双引号

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

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


0

如果您想永久更改库路径(而不是每次进入R时调用.libPath()),可以按照以下步骤进行:

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

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

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


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文件...完成!!

-2
我之所以研究这个问题,是因为R安装到默认位置时出现了问题,而只是将软件包放入了临时文件夹。结果发现是Mcaffee Endpoint Security的最新更新引起的问题,它似乎与R不兼容。您可以在安装软件包时禁用威胁保护,这样它就能正常工作了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接