自己写的R包找不到自己的函数

Self-written R package does not find its own function

我创建了一个包,其中包含一些对我公司有用的功能。最近,我重构了这个包,这样就有一些辅助函数不需要每个人都可以访问,而是从包的其他(导出的)函数内部调用。这些辅助函数未导出到命名空间(相应 .R 文件中没有 #' @export)。

现在,当我调用 "major"(导出的)函数之一时,我收到错误消息(没有真正的函数名称):

Error in major_function() : could not find function "helper_function"

我在构建包方面相当新,但根据我目前的理解(来自 https://cran.r-project.org/web/packages/roxygen2/vignettes/namespace.html),既没有必要导出辅助函数,也没有必要将 #' importFrom my_package helper_function 添加到 .R 主要函数的文件。

当我尝试这样做时,它实际上在检查包时产生了错误。我还尝试使用 my_package:::helper_function 调用辅助函数,但这导致注意到几乎永远不需要像这样从同一个包调用函数。

可能有用的信息:

仅当我调用内部调用 major_function_2major_function_1 调用 helper_function.

时才会发生错误

我认为你的问题比你所说的更多。只要您的所有函数都在同一个命名空间中定义(这也意味着您的所有函数都需要存在于同一文件夹中的 .R 文件中),调用函数应该相应地找到辅助函数。 我怀疑您的辅助函数以某种方式嵌套,这就是导致问题的原因。

我建议重新检查您的命名空间结构,或者post在此处对您的包进行简单的概述。

可能想到的另一个原因是,您没有在包根目录中的 NAMESPACE 文件中导出 'mayor_function2'(也许您没有重新编译生成此文件的 Roxygen 文档),另外还有调用函数的局部影子 'mayor_function1'。尝试检查它并从干净的编译中重新运行。