-1

我有一个 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 库,而不必每次使用该库时都将其包含在每个脚本中?

4

1 回答 1

4

(请注意,脚本不是包。)

当您运行脚本analyzer.R时,它会显式加载base64enc,因此包位于您的加载路径中。

但是你的包可能只是有Imports: base64enc一个相应的NAMESPACE声明——它使base64enc你的包中的代码可用但不加载它

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

于 2015-05-20T20:20:04.443 回答