35

如何永久删除 R 中的库?

.libPaths()
[1] "\\\\per-homedrive1.corp.riotinto.org/homedrive$/Tommy.O'Dell/R/win-library/2.15"
[2] "C:/Program Files/R/R-2.15.2/library"                                            
[3] "C:/Program Files/RStudio/R/library"     

第一项是我的公司“我的文档”文件夹,我姓氏的路径中的撇号在我正在制作的包上使用时会引起各种悲伤R CMD INSTALL --build,更不用说在我离线时使用安装在那里的包的问题从网络。

我想改为使用C:/Program Files/R/R-2.15.2/library默认值,但我不想依赖Rprofile.site.

我试过的

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

这似乎可行,但直到我重新启动我的 R 会话,然后我回到原来的 .libPaths() 输出......

Restarting R session...

> .libPaths()
[1] "\\\\per-homedrive1.corp.riotinto.org/homedrive$/Tommy.O'Dell/R/win-library/2.15"
[2] "C:/Program Files/R/R-2.15.2/library"                                            
[3] "C:/Program Files/RStudio/R/library" 

我想也许.libPaths()正在使用R_LIBS_USER

> Sys.getenv("R_LIBS_USER")
[1] "//per-homedrive1.corp.riotinto.org/homedrive$/Tommy.O'Dell/R/win-library/2.15"

所以我尝试使用它来取消它,Sys.unsetenv("R_LIBS_USER")但它不会在会话之间持续存在。

附加信息

如果重要的话,这里有一些可能相关的环境变量......

> Sys.getenv("R_HOME")
[1] "C:/PROGRA~1/R/R-215~1.2"
> Sys.getenv("R_HOME")
[1] "C:/PROGRA~1/R/R-215~1.2"
> Sys.getenv("R_USER")
[1] "//per-homedrive1.corp.riotinto.org/homedrive$/Tommy.O'Dell"
> Sys.getenv("R_LIBS_USER")
[1] "//per-homedrive1.corp.riotinto.org/homedrive$/Tommy.O'Dell/R/win-library/2.15"
> Sys.getenv("R_LIBS_SITE")
[1] ""

我已经尝试过Sys.unsetenv("R_LIBS_USER"),但这也不会在会话之间停留

4

5 回答 5

26

Just set the environment variable R_LIBS in Windows to something like

R_LIBS=C:/Program Files/R/R-2.15.2/library

Restart R.

于 2013-03-05T07:42:49.537 回答
20

这对这个问题的回答有点晚,但可能对其他人有用。我命令设置自己的路径(并删除原始路径之一)我有:

  • .libPaths()R中用于检查当前库路径
  • 确定要保留的路径。就我而言,它保留了R的原始库,但删除了指向我的文档的链接。
  • 使用or找到R-Home路径; R.home()Sys.getenv("R_HOME")
    • R-Home\R-3.2.2\etc\Rprofile.site每次 R 内核启动时都会读取。因此,任何修改都将持续到 R 的每次运行
  • Rprofile.site通过添加以下内容进行编辑,

.libPaths(.libPaths()[2]) .libPaths("d:/tmp/R/win-library/3.2")

这个怎么运作?

  • 第一行删除除了一个路径(原始列表中的第二个)之外的所有路径,第二行添加了一个附加路径。我们最终有两条路。
  • 请注意,尽管使用 Windows,但我使用 Unix 路径表示法。R 始终使用 Unix 表示法,无论操作系统如何
  • 重新启动 R(使用Ctr+Shift+F10

现在每次都可以使用。

于 2015-11-14T20:46:28.190 回答
7

.Rprofile

set_lib_paths <- function(lib_vec) {
  lib_vec <- normalizePath(lib_vec, mustWork = TRUE)
  shim_fun <- .libPaths
  shim_env <- new.env(parent = environment(shim_fun))
  shim_env$.Library <- character()
  shim_env$.Library.site <- character()
  environment(shim_fun) <- shim_env
  shim_fun(lib_vec)
}
set_lib_paths("~/code/library") # where "~/code/library" is your package directory

原始来源:https ://milesmcbain.xyz/hacking-r-library-paths/

于 2020-01-31T19:29:02.653 回答
3

我已将Sys.unsetenv("R_LIBS_USER")命令.Rprofile放在我的 windows"own documents"文件夹中的一个文件中。似乎有帮助。R我的问题是,当通过 vpn 连接时,处于活动目录环境中的新贵和包加载速度非常慢。

于 2013-05-27T20:12:50.610 回答
2

如果您想在RProfile文件 (@ library/base/R/) 中执行此操作,您可以搜索R_LIBS_*设置环境变量的行(例如Sys.setenv(R_LIBS_SITE=....)Sys.setenv(R_LIBS_USER=.....))。您还可以搜索.libPaths()设置库树的代码。因此,您可以根据需要在调用R_LIBS前通过评论、取消设置和设置变量来实现您的目标。.libPaths()例如像这样的东西:

Sys.unsetenv("R_LIBS")
Sys.unsetenv("R_LIBS_USER")
Sys.setenv(R_LIBS_SITE = "D:/R/libs/site")
Sys.setenv(R_LIBS_USER = "D:/R/libs/user")
Sys.setenv(R_LIBS = "D:/R/libs")
于 2016-05-05T06:40:45.727 回答