Ubuntu中如何在R中移除.libPaths()?

6

我安装了RStudio之后,运行了以下命令:

library()

警告信息: 库 '/usr/local/lib/R/site-library','/usr/lib/R/site-library' 中没有包

然后我输入:

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

我该如何移除[2]和[3],以避免再次出现警告消息?

预期输出:

.libPaths()

[1] "/home/avalon/R/x86_64-pc-linux-gun-library/3.2"
[4] "/usr/lib/R/library"

删除空目录 /usr/local/lib/R/site-library 和 /usr/lib/R/site-library 吗? - Martin Morgan
我通过Linux命令行将它们删除了,但之后会有任何问题吗? - Peter Chung
1个回答

6

Linux

首先要做的是阅读它(? .libPaths )的帮助文档,您会看到:

' .libPaths' 用于获取或设置 R 知道的库路径(因此在查找软件包时使用)。如果使用参数 'new' 调用,则将库搜索路径设置为 unique(c(new, .Library.site, .Library)) 中现有目录,并返回结果。如果没有给出参数,则返回一个字符向量,其中包含当前活动的库树。

(重点突出)。这应该让我们想知道 .Library.site 的作用。奇怪的是,它保存了系统范围内(因此称为“site”)的库路径,应始终保持不变,因此它们始终得到维护。

文档进一步指出:

' .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"

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"

当然有一种方法可以通过编程来过滤路径,而不是盲目地取第三个元素,但现在这种方法应该能够工作。


在 .libPaths("/home/avalon/R/x86_64-pc-linux-gun-library/3.2", .libPaths()) 中出现错误:未使用的参数 (.libPaths())。 - Peter Chung
看到我的编辑,谢谢(打字匆忙)...但我希望它能像我第一次输入时那样透明地工作 - r2evans
1
仍然出现四个选项,并且仍然有警告消息:库'/usr/local/lib/R/site-library','usr/lib/R/site-library'中不包含任何软件包。 - Peter Chung
实际上我不想看到警告信息,所以我想把其中两个删除。 - Peter Chung
只是好奇,这里的警告对你来说完全是表面上的,没有任何损害。仅仅使用 suppressWarnings(library()) 就足够了吗? - r2evans
是的,那是个好主意,但它并没有解决问题。我之前在 Mac 上安装过 R 和 R Studio,它们没有这个问题。所以实际上,我想知道为什么会出现这个问题,以及如何修复它。 - Peter Chung

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接