永久删除.libPaths()中的库而不使用Rprofile.site

时间:2013-03-05 07:05:15

标签: r

如何永久删除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"),但这也不会在会话之间停留

5 个答案:

答案 0 :(得分:20)

只需将Windows中的环境变量R_LIBS设置为

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

重启R.

答案 1 :(得分:15)

对这个问题的回答有点晚,但可能对其他人有用。 我订购了自己的路径(并删除了原来的路径):

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

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

如何运作?

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

现在每次都会有效。

答案 2 :(得分:4)

.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/

答案 3 :(得分:3)

我已将Sys.unsetenv("R_LIBS_USER")命令放在我的Windows .Rprofile文件夹中的"own documents"文件中。似乎有所帮助。我的问题是,在活动目录环境中,当通过vpn连接时,R upstart和程序包加载速度极慢。

答案 4 :(得分:0)

如果您想在RProfile文件(@ library/base/R/)执行此操作,则可以搜索设置了R_LIBS_*个环境变量的行(例如Sys.setenv(R_LIBS_SITE=....)和{ {1}}) 您还可以搜索设置库树的代码Sys.setenv(R_LIBS_USER=.....)。因此,您可以根据需要在.libPaths()调用之前结合注释,取消设置和设置R_LIBS变量来实现目标。对于例如类似的东西:

.libPaths()