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

Tom*_*ell 26 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"     
Run Code Online (Sandbox Code Playgroud)

第一个项目是我的公司"我的文档"文件夹,从我的姓氏路径中的撇号在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" 
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但只有在我重新开始我的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" 
Run Code Online (Sandbox Code Playgroud)

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

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

所以我试图使用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] ""
Run Code Online (Sandbox Code Playgroud)

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

ags*_*udy 22

只需R_LIBS在Windows中设置环境变量即可

R_LIBS=C:/Program Files/R/R-2.15.2/library
Run Code Online (Sandbox Code Playgroud)

重启R.

  • 一个工作示例如下所示 Sys.setenv(R_LIBS_USER = 'C:/Program Files/R/R-2.15.2/library') (3认同)

小智 17

这个问题有点迟了,但可能对其他人有用.我要建立自己的路径(并删除原来的路径)我有:

  • 使用.libPaths()内部- [R检查当前库路径 ;
  • 确定了要保留的路径.在我的情况下,它保留了R的原始库,但删除了我的文档的链接.
  • 使用或找到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)

这将每次都有效.

  • 这在 `ubuntu` 上不是这样:运行 `.libPaths(.libPaths()[2])` 不会删除其他库。 (2认同)

Ahm*_*bas 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
Run Code Online (Sandbox Code Playgroud)

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