自己写的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_2
的 major_function_1
调用 helper_function
.
时才会发生错误
我认为你的问题比你所说的更多。只要您的所有函数都在同一个命名空间中定义(这也意味着您的所有函数都需要存在于同一文件夹中的 .R 文件中),调用函数应该相应地找到辅助函数。
我怀疑您的辅助函数以某种方式嵌套,这就是导致问题的原因。
我建议重新检查您的命名空间结构,或者post在此处对您的包进行简单的概述。
可能想到的另一个原因是,您没有在包根目录中的 NAMESPACE
文件中导出 'mayor_function2'(也许您没有重新编译生成此文件的 Roxygen 文档),另外还有调用函数的局部影子 'mayor_function1'。尝试检查它并从干净的编译中重新运行。
我创建了一个包,其中包含一些对我公司有用的功能。最近,我重构了这个包,这样就有一些辅助函数不需要每个人都可以访问,而是从包的其他(导出的)函数内部调用。这些辅助函数未导出到命名空间(相应 .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_2
的 major_function_1
调用 helper_function
.
我认为你的问题比你所说的更多。只要您的所有函数都在同一个命名空间中定义(这也意味着您的所有函数都需要存在于同一文件夹中的 .R 文件中),调用函数应该相应地找到辅助函数。 我怀疑您的辅助函数以某种方式嵌套,这就是导致问题的原因。
我建议重新检查您的命名空间结构,或者post在此处对您的包进行简单的概述。
可能想到的另一个原因是,您没有在包根目录中的 NAMESPACE
文件中导出 'mayor_function2'(也许您没有重新编译生成此文件的 Roxygen 文档),另外还有调用函数的局部影子 'mayor_function1'。尝试检查它并从干净的编译中重新运行。