包依赖
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 加载另一个包。
我有一个 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 加载另一个包。