我有一个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库,而不必在每次使用库时都将它包含在每个脚本中吗?
答案 0 :(得分:4)
(请注意,脚本不是包。)
当您运行脚本analyzer.R
时,它会显式加载base64enc
,因此包位于您的加载路径中。
但您的软件包可能只有Imports: base64enc
并带有相应的NAMESPACE
语句,这使得您的软件包中的base64enc
代码可用,但不加载。
在我们过去做Depends: base64enc
的那天, 也会加载它 - 但是会使搜索路径变得混乱。 Imports:
更好,但你在这里观察到非常副作用。所以只需在REPL上加载另一个包。