【问题标题】:dependent packages not loading in R on Debian依赖包未在 Debian 上的 R 中加载
【发布时间】:2011-07-07 16:30:47
【问题描述】:

我在运行 R 2.11.1 的干净 Debian 安装上加载 sde 包时遇到问题。但是,我已经在其他一些包中看到了这种行为,所以我认为它不仅仅针对这个包。这是一个难题的例子:

>install.packages("sde", lib.loc=libPath)

... 安装 sde,以及它所依赖的包:zoo、fda

> library(sde,  lib=libPath)
Loading required package: fda
Error: package 'fda' could not be loaded
In addition: Warning message:
In library(pkg, character.only = TRUE, logical.return = TRUE, lib.loc = lib.loc) :
  there is no package called 'fda'

好的,这很奇怪。我看到 fda 正在安装。所以我手动加载依赖:

> library(zoo,  lib=libPath)
> library(fda,  lib=libPath)
Loading required package: splines

好的,那行得通。现在让我们试试 sde:

> library(sde,  lib=libPath)
To check the errata corrige of the book, type vignette("sde.errata")

WTF?它加载得很好?!?

那么为什么我可以手动加载包,但 R 没有自动提取它们?

让我更加困惑的是,我在调试过程中发现,如果我不使用lib=libPath,那么一切正常。所以看起来使用包的自定义路径搞砸了这一切......但是为什么呢?

【问题讨论】:

  • 如果你在 sde 之前加载 zoo 会发生什么,因为 fda 似乎需要它?
  • 嗯。 lib 是否正确传递到依赖加载阶段...?
  • 如果我在 R 中进行操作,事情不会改变。我仍然必须手动安装 fde。但是,如果我 apt-get 安装它,一切正常。
  • 本,我想知道。
  • 什么是libPath.libPaths()? fda 和 zoo 在libPath 吗?

标签: r packages


【解决方案1】:

你证实了我对 cme​​ts 的怀疑。您需要做以下两件事之一:

.libPaths(libPath)

library(sde,  lib=c(libPath,.libPaths()))

我更喜欢第一种方法,因为第二种方法要求您对所有对library 的调用都这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 2014-06-24
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    相关资源
    最近更新 更多