Linux
首先要做的是阅读手册页 (?.libPaths),然后您会看到:
'.libPaths' 用于获取或设置 R 知道的库树(因此在查找包时使用)。如果使用参数“new”调用,则库搜索路径将设置为 unique(c(new, .Library.site, .Library)) 中的现有目录并返回。如果不给定参数,则返回具有当前活动库树的字符向量。
(强调添加)。这应该让我们想知道.Library.site 持有什么。奇怪的是,它拥有“应该”始终保留的系统范围(ergo “站点”)库路径,因此它们始终被维护。
它进一步说:
“.Library.site”可以通过环境变量“R_LIBS_SITE”设置(作为非空分号分隔的库树列表)。
所以修复它的一种方法是在启动 R 时给它一个空字符串(不能在 R 中完成):
# in bash on the command line:
$ R_LIBS_SITE=" " R
# in R
R> .libPaths()
[1] "/usr/lib/R/library"
使用 RStudio 的方法是创建一个至少包含以下内容的 ~/.Renviron 文件:
R_LIBS_SITE=" "
完成后,您无需再从.libPaths() 中删除辅助站点库路径:
R> .libPaths()
[1] "/usr/lib/R/library"
窗口
假设您正在执行以下操作:
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"
当然有一种方法可以以编程方式过滤路径,而不是盲目地采用第三个元素,但现在应该可以了。