包依赖

Package Dependencies

我有一个 R 包,它依赖于 base64enc 库。当我运行包里的源文件用Rscript:

Rscript analyzer.R

它运行很好。

analyzer.R中的第一行是:

library(base64enc);

但是,当我 运行 repl 中包中的函数时:

library(analyzer)
analyze()

提示没有安装base64enc

Error in rawToChar(base64decode(mark[1])) :
  could not find function "base64decode"
Calls: analyze ... collect.marks -> lapply -> FUN -> lapply -> FUN -> rawToChar

然而,当我在 REPL 中手动包含 base64enc:

library(base64enc)
library(analyzer)
analyze()

它工作正常。无论如何,我可以告诉我的分析器包使用 base64enc 库,而不必在每次使用该库时都将其包含在每个脚本中吗?

(注意脚本不是包。)

当你 运行 你的脚本 analyzer.R 它显式加载 base64enc 所以包在你的加载路径中。

但是您的包 可能 只包含 Imports: base64enc 和相应的 NAMESPACE 语句——这使得来自 base64enc 的代码在您身上可用打包 但不加载它

过去我们曾经 Depends: base64enc 也会 加载它——但会使搜索路径混乱。 Imports: 更好,但具有您在此处观察到的副作用。所以只需在 REPL 加载另一个包。