Linux
首先要做的是阅读它(? .libPaths
)的帮助文档,您会看到:
' .libPaths' 用于获取或设置 R 知道的库路径(因此在查找软件包时使用)。如果使用参数 'new' 调用,则将库搜索路径设置为 unique(c(new, .Library.site, .Library))
中现有目录,并返回结果。如果没有给出参数,则返回一个字符向量,其中包含当前活动的库树。
(重点突出)。这应该让我们想知道 .Library.site
的作用。奇怪的是,它保存了系统范围内(因此称为“site”)的库路径,应始终保持不变,因此它们始终得到维护。
文档进一步指出:
' .Library.site' 可以通过环境变量 'R_LIBS_SITE' 来设置(作为非空分号分隔的库树列表)。
因此,修复它的一种方法是在启动 R 时给它传递一个空字符串(无法从 R 内部执行):
$ R_LIBS_SITE=" " R
R> .libPaths()
[1] "/usr/lib/R/library"
要在RStudio中实现这一点,需要创建一个包含以下内容的~/.Renviron
文件:
R_LIBS_SITE=" "
完成这一步后,您不需要额外做任何操作来从.libPaths()中移除次要站点库路径:
R> .libPaths()
[1] "/usr/lib/R/library"
Windows
假设您正在执行以下操作:
R> .libPaths(c("/home/avalon/R/x86_64-pc-linux-gun-library/3.2", .libPaths()))
[1] "/home/avalon/R/x86_64-pc-linux-gun-library/3.2"
[2] "/usr/local/lib/R/site-library"
[3] "/usr/lib/R/site-library"
[4] "/usr/lib/R/library"
如果您在执行此操作后想进行更正,则只需执行以下操作:
R> .libPaths( c(.libPaths()[c(1,4)]) )
[1] "/home/avalon/R/x86_64-pc-linux-gun-library/3.2"
[2] "/usr/lib/R/library"
或者,您可以这样做 第一次(即在它仍然有三个元素时,其中两个对您不好):
R> .libPaths(c("/home/avalon/R/x86_64-pc-linux-gun-library/3.2", .libPaths()[3]))
[1] "/home/avalon/R/x86_64-pc-linux-gun-library/3.2"
[2] "/usr/lib/R/library"
当然有一种方法可以通过编程来过滤路径,而不是盲目地取第三个元素,但现在这种方法应该能够工作。