【问题标题】:Ubuntu remove .libPaths() in RUbuntu 在 R 中删除 .libPaths()
【发布时间】:2016-11-09 12:22:10
【问题描述】:

安装 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 ?
  • 我是通过Linux命令行删除的,后来有什么问题吗?

标签: r linux


【解决方案1】:

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"

当然有一种方法可以以编程方式过滤路径,而不是盲目地采用第三个元素,但现在应该可以了。

【讨论】:

  • .libPaths("/home/avalon/R/x86_64-pc-linux-gun-library/3.2", .libPaths()) 中的错误:未使用的参数 (.libPaths())跨度>
  • 查看我的编辑,谢谢(仓促打字)......但我希望它在我第一次输入时能够透明地工作
  • 仍然出现四个选项并且仍然有警告信息:库 '/usr/local/lib/R/site-library', 'usr/lib/R/site-library' contains no packages跨度>
  • 其实我不想看到警告信息,所以我想删除其中两个
  • 只是好奇,这里的警告对您来说完全是装饰性的,不会造成任何伤害。 suppressWarnings(library()) 就够了吗?
猜你喜欢
  • 2016-12-01
  • 1970-01-01
  • 2015-06-25
  • 2014-08-14
  • 1970-01-01
  • 2019-02-18
  • 2020-01-27
  • 2020-07-13
  • 2015-03-07
相关资源
最近更新 更多