我创建了一个包含一些对我公司有用的功能的包。最近,我重新编译了包,使得有一些帮助函数,不需要每个人都可以访问,但是从包的其他(导出)函数内部调用。这些辅助函数不会导出到命名空间(相应的 @destination_bucket.object(target).copy_from(@destination_bucket.object(target), metadata_directive: 'REPLACE')
文件中没有#' @export
)。
现在,当我打电话给其中一个" major" (导出)函数,我收到错误信息(没有真正的函数名称):
major_function()出错:找不到函数" helper_function"
我在构建包方面相当新,但是根据我目前的理解(来自https://cran.r-project.org/web/packages/roxygen2/vignettes/namespace.html),既不需要导出辅助函数,也不需要将.R
添加到{{1}主要功能的文件。
当我尝试这个时,它确实在检查包时产生了错误。我也尝试用#' importFrom my_package helper_function
调用辅助函数,但这导致注意几乎从来没有必要像这样调用同一个包中的函数。
也许有用的信息:
只有当我拨打内部呼叫.R
并调用my_package:::helper_function
的{{1}}时,才会出现此错误。
答案 0 :(得分:1)
我认为你的问题比你说的更多。只要所有函数都在同一命名空间中定义(这也意味着所有函数都需要存在于同一文件夹中的.R文件中),调用函数应该相应地找到辅助函数。 我怀疑你的帮助函数以某种方式嵌套,这就是问题所在。
我建议您重新检查您的命名空间结构,或在此处发布您的包的简单概述。
可能会想到的另一个原因是,您不会在包{root}中的NAMESPACE
文件中导出'mayor_function2'(也许您没有重新编译生成此文件的Roxygen文档),另外有一个调用函数'mayor_function1'的局部阴影。尝试检查一下,然后从干净的编译中重新运行。