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

自行编写的R包找不到自己的函数,r,r-package,R,R Package,我创建了一个包含一些功能的软件包,这些功能对我的公司很有帮助。最近,我重新构建了包,这样就有了帮助函数,这些函数不需要每个人都可以访问,而是从包的其他(导出的)函数内部调用。这些助手函数不会导出到名称空间(在相应的.R文件中没有#'@export) 现在,当我调用其中一个“主要”(导出)函数时,我会收到错误消息(没有真正的函数名): 主函数()中出错:找不到函数“helper\u function” 我对构建软件包相当陌生,但据我目前的理解(从),不必导出helper函数,也不必将#import

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

现在,当我调用其中一个“主要”(导出)函数时,我会收到错误消息(没有真正的函数名):

主函数()中出错:找不到函数“helper\u function”

我对构建软件包相当陌生,但据我目前的理解(从),不必导出helper函数,也不必将
#importFrom my_package helper_函数
添加到主函数的
.R
文件中

当我尝试这个方法时,它实际上在检查包时产生了错误。我还尝试使用
my_package:::helper_function
调用helper函数,但这导致了一个问题,即几乎不需要像这样从同一个包调用函数

可能有用的信息:


只有当我调用一个
major\u function\u 1
时才会发生错误,该函数在内部调用
major\u function\u 2
该函数调用一个
helper\u函数

我认为你的问题不仅仅是你所说的。只要所有函数都在同一名称空间中定义(这也意味着所有函数都需要位于同一文件夹中的.R文件中),调用函数就应该相应地找到帮助函数。 我怀疑您以某种方式嵌套了助手函数,这就是问题的原因

我建议重新检查您的名称空间结构,或者在这里发布一个简单的包概要


另一个可能会想到的原因是,您并没有将
名称空间中的“mayor_function2”导出到包根目录中的文件(可能您并没有重新编译生成此文件的Roxygen文档),并且还具有调用函数“mayor_function1”的本地阴影。尝试检查此项,然后从干净的编译重新运行。

嵌套的帮助程序函数有什么问题?我怎样才能避免相关的问题呢?只要正确跟踪它们的名称空间就没有问题。这意味着,如果它们位于包的本地,请确保它们与导出的函数位于同一名称空间中,如果它们不位于同一名称空间中(例如,不同的包),则需要导入该包并确保该包导出它们(如果可以影响)。[也别忘了每次都要重新编译Roxygen,这个包,在一个干净的环境中工作:)]我再次检查了结构,没有改变任何东西,重新编译包,瞧,它工作了。我不知道以前出了什么问题。我想,我在没有重新编译的情况下改变了不同的东西(尽管我认为我这样做了)。