如何更改R包的默认库路径

use*_*490 34 r

我试图在我的工作计算机上的本地驱动器上安装R和R studio,而不是组织网络文件夹,因为任何通过网络运行的都非常慢.安装时,目标路径显示它是我的本地C:驱动器.但是,当我安装新软件包时,显示的默认路径是我的网络驱动器,没有更改选项:

.libPaths()
[1] "\\\\The library/path/I/don't/want"
[2] "C:/Program Files/R/R-3.2.1/library" 
Run Code Online (Sandbox Code Playgroud)

我正在运行Windows 7专业版.如何删除库路径[1]并使路径[2]成为我安装的所有基础包和所有新包的主要路径?

Dir*_*tel 39

help(Startup),help(.libPaths)因为你可能已经设置了几种可能性.其中有

  • 设置 R_LIBS_USER
  • 分配.libPaths().RprofileRprofile.site

和更多.

在这种特殊情况下,您需要向后移动并在设置时取消\\\\The library/path/I/don't/want设置.

要忽略它,你需要明确地使用它来覆盖它,即通过

library("somePackage", lib.loc=.libPaths()[-1])
Run Code Online (Sandbox Code Playgroud)

加载包时

  • 非常感谢,我只是设置.libPaths("C:/ Program Files/R/R-3.2.1/library"),现在这是唯一显示的路径. (7认同)

Eri*_*ntz 35

Windows 7:如果您C:\Program Files(或安装了R的地方)被阻止写入,就像我的那样,那么您将受到沮丧的编辑RProfile.site(就像我一样).如上所述,我更新R_LIBS_USER并且工作正常.然而,即使在阅读了好几本精细的手册并进行了广泛的搜索之后,我花了几个小时来做​​这件事.本着拯救别人时间的精神......

假设您希望您的软件包驻留在C:\R\Library:

  1. 创建文件夹 C:\R\Library
  2. 单击Start- > Control Panel- > User Accounts- >Change my environmental variables
  3. Environmental Variables窗口弹出.如果看到R_LIBS_USER,请突出显示并单击Edit.否则点击New.这两项行动打开一个窗口,与场VariableValue.
  4. 在我的情况下,R_LIBS_USER已经存在,价值是我桌面的路径.我在路径中添加了我创建的文件夹,如上所述以分号分隔.C:\R\Library;C:\Users\Eric.Krantz\Desktop\R stuff\Packages.注意:我可以删除桌面位置的路径,然后离开C:\R\Library.

  • 谢谢您的一步一步,似乎在 Windows 10 中也适用于我。 (3认同)

Mar*_*rco 17

面对同样的问题(避免网络中的默认路径),我在其他答案中给出了提示.

解决方案是编辑Rprofile文件以覆盖R_LIBS_USER默认指向主目录的变量.

这里的步骤:

  1. 为库创建目标目标文件夹,例如 ~\target.
  2. 找到该Rprofile文件.在我的情况下它是在C:\Program Files\R\R-3.3.3\library\base\R\Rprofile.
  3. 编辑文件并更改变量的定义R_LIBS_USER.就我而言,我取代了这条线file.path(Sys.getenv("R_USER"), "R",file.path("~\target", "R",.

支持此解决方案的文档就在这里

原始文件:

 if(!nzchar(Sys.getenv("R_LIBS_USER")))
     Sys.setenv(R_LIBS_USER=
                file.path(Sys.getenv("R_USER"), "R",
                          "win-library",
                          paste(R.version$major,
                                sub("\\..*$", "", R.version$minor),
                                sep=".")
                          )) 
Run Code Online (Sandbox Code Playgroud)

修改文件:

if(!nzchar(Sys.getenv("R_LIBS_USER")))
     Sys.setenv(R_LIBS_USER=
                file.path("~\target", "R",
                          "win-library",
                          paste(R.version$major,
                                sub("\\..*$", "", R.version$minor),
                                sep=".")
                          ))
Run Code Online (Sandbox Code Playgroud)

  • 我最近在使用Win 7的机器上使用了程序,"〜\ target"不起作用,我不得不使用"〜/ target".我从来没有理解为什么以及何时使用"/"或"\"很重要. (3认同)

Car*_*ang 6

网络上的 Windows 10

将包存储在网络驱动器上会大大降低 R / R Studio 的性能,并且由于必须通过服务器检索和推送数据的瓶颈,您会花费大量时间等待库加载/安装返回到您的本地主机。有关如何在本地计算机上创建 .RProfile 的说明,请参阅以下内容:

  1. 创建一个名为 C:\Users\xxxxxx\Documents\R\3.4 的目录(或您正在使用的任何 R 版本,以及您将存储本地 R 包的位置 - 您的目录位置可能与我的不同)
  2. 在 R 控制台上,键入Sys.getenv("HOME")以获取您的主目录(这是您的 .RProfile 将存储的位置,R 将始终检查那里是否有包 - 如果包存储在那里,则该目录位于网络上)
  3. 创建一个名为的文件.Rprofile并将其放入(在 R Console 中:\YOUR\HOME\DIRECTORY\ON_NETWORK输入后得到的目录)Sys.getenv("HOME")
  4. 文件内容.Rprofile应该是这样的:

#search 2 places for packages- install new packages to first directory- load built-in packages from the second (this is from your base R package- will be different for some)

.libPaths(c("C:\Users\xxxxxx\Documents\R\3.4", "C:/Program Files/Microsoft/R Client/R_SERVER/library"))

message("*** Setting libPath to local hard drive ***")
Run Code Online (Sandbox Code Playgroud)

#insert a sleep command at line 12 of the unpackPkgZip function. So, just after the package is unzipped.

trace(utils:::unpackPkgZip, quote(Sys.sleep(2)), at=12L, print=TRUE)

message("*** Add 2 second delay when installing packages, to accommodate virus scanner for R 3.4 (fixed in R 3.5+)***")
Run Code Online (Sandbox Code Playgroud)

# fix problem with tcltk for sqldf package: https://github.com/ggrothendieck/sqldf#problem-involvling-tcltk

options(gsubfn.engine = "R")

message("*** Successfully loaded .Rprofile ***")
Run Code Online (Sandbox Code Playgroud)
  1. 重新启动 R Studio 并验证是否看到显示上述消息。

现在,您可以在本地主机上享受应用程序更快的性能,而不是将包存储在网络上并减慢一切速度。


str*_*agu 5

我为此苦苦挣扎了一段时间,因为我的工作计算机(使用 Windows 10)在网络驱动器上创建了默认用户库,这会使 R 和 RStudio 减慢至无法使用的状态。

如果这对某人有帮助,这是我发现的最简单的方法,不需要管理员权限:

  • 确保您想要安装软件包的目录存在。如果您想尊重约定,请使用:(C:\Users\username\R\win-library\rversion例如,类似C:\Users\janebloggs\R\win-library\3.6:)
  • 在您的主目录中创建一个.Renviron文件(可能位于网络驱动器上?),然后在其中写入一行将变量定义R_LIBS_USER为您的自定义路径:

R_LIBS_USER=C:\Users\janebloggs\R\win-library\3.6

(也可以随意添加评论,行以 开头#

如果.Renviron文件存在,R 将在启动时读取它并使用其中定义的变量,然后再运行.Rprofile. 您可以在 中阅读相关内容help(Startup)

现在它应该在会话之间持续存在!