我应该如何处理';助手';R包中的函数? 背景
我写了一个R包,现在一个合作者(最近的CS毕业生,是R的新手)正在编辑和重构代码。在这个过程中,他将我的函数划分为更小、更通用的函数 他所做的是有道理的,但当我开始使用我应该如何处理';助手';R包中的函数? 背景,r,coding-style,package,roxygen,R,Coding Style,Package,Roxygen,我写了一个R包,现在一个合作者(最近的CS毕业生,是R的新手)正在编辑和重构代码。在这个过程中,他将我的函数划分为更小、更通用的函数 他所做的是有道理的,但当我开始使用package.skeleton()时,每个函数有一个文件。现在,他添加了主函数所依赖的函数,但这在函数本身之外的用途可能有限 他建议所有函数都放在一个文件中,但我反对,因为当我们处理不同的文件时,版本控制更容易 从那以后,我开始使用roxygen来记录文本中的每个函数 问题: 处理函数的推荐方法是什么:显然,helper函数应该
package.skeleton()
时,每个函数有一个文件。现在,他添加了主函数所依赖的函数,但这在函数本身之外的用途可能有限
他建议所有函数都放在一个文件中,但我反对,因为当我们处理不同的文件时,版本控制更容易
从那以后,我开始使用roxygen来记录文本中的每个函数
问题:
处理函数的推荐方法是什么:显然,helper函数应该和main函数一起使用,但我需要在多大程度上记录helper函数
评论中的
@export
建议很有帮助,但我很想知道其他人是如何组织他们的代码的。我在两种情况下切断了我的功能:
lm
和底层的lm.fit
进行比较,高级用户可以充分利用lm.fit
来加速代码等
我使用相当多的软件包中使用的命名约定(并从linux派生),在每个“隐藏”函数前面加一个点。因此,这使得
.helper.function <- function(x, ...){
... some code ...
}
main.function <- function(x, ...){
...some code, including .helper.function(y, ...)
}
.helper.function是否可以像不导出helper函数一样简单?@Joshua我不知道,我不熟悉导出函数的方式/内容/原因/位置您可能需要一个名称空间文件来指定哪些函数是用户“可见”的,哪些不可见。你可以试着用一个新的。在您希望用户不要看到并在包结构根目录中的命名空间文件中使用“exportPattern(“^[^\\\.]”)的函数前面,如果您使用的是roxygen,最好显式地@export
将要导出+1到hadley的函数导出到roxygen部分!谢谢如果在一个额外的文件中有一个非导出的助手函数,那么如何为这些助手文件提供源代码,以便主函数可以使用它们?毕竟,它们不会被导出,因此用户看不见。@shosaco在一个无关紧要的包的上下文中。如果您使用的是一个包,也就是说,只有一堆带有函数的脚本,那么在使用主函数之前,您必须使用source()
来获取帮助文件的源代码。请记住,所有内容都会以这种方式在全局环境中结束,因此您可能会意外地覆盖和/或删除helper函数。