Ubuntu删除R中的.libPaths()

时间:2016-07-07 08:47:33

标签: r linux

安装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"

1 个答案:

答案 0 :(得分:4)

的Linux

要做的第一件事是阅读其上的联机帮助页(?.libPaths),您将看到:

  

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

(重点补充)。这应该让我们想知道.Library.site持有什么。奇怪的是,它拥有全系统(ergo" site")库路径,并且应该#34;永远保持,所以他们总是保持。

进一步说:

  

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

当然有一种方法可以通过编程方式过滤路径,而不是盲目地使用第3个元素,但这应该适用于此。