更改R包中文件的加载顺序

更改R包中文件的加载顺序,r,build,package,R,Build,Package,我正在为R编写一个包,其中导出的函数由一个高阶函数修饰,该函数添加了错误检查和一些其他样板代码 但是,由于此代码处于顶层,因此在解析后对其进行计算。这意味着 包文件的加载顺序很重要 为了给出一个等效但简化的示例,假设我有一个包含两个文件(Negate2和Utils)的包,我要求首先加载Negate2.R,以便在不引发错误的情况下定义函数“isfalse()” # /Negate2.R Negate2 <- Negate # ------------------- # /Utils.R

我正在为R编写一个包,其中导出的函数由一个高阶函数修饰,该函数添加了错误检查和一些其他样板代码

但是,由于此代码处于顶层,因此在解析后对其进行计算。这意味着 包文件的加载顺序很重要

为了给出一个等效但简化的示例,假设我有一个包含两个文件(Negate2和Utils)的包,我要求首先加载Negate2.R,以便在不引发错误的情况下定义函数“isfalse()”

# /Negate2.R
Negate2 <- Negate

# -------------------

# /Utils.R
istrue <- isTRUE
isfalse <- Negate2(istrue)

DESCRIPTION
文件的
Collate:
字段允许您更改生成包时加载文件的顺序


昨天我在阅读《Roxygen》的时候偶然发现了这个问题的答案。如果您一直在使用Roxygen记录您的函数,它可以尝试在
Collate:
字段中智能地排序
R
源文件(基于S4类和方法定义的位置)。这可以通过在
roxygenize
roclets
参数中添加
“collate”
来实现。或者,如果您在
RStudio
中进行开发,则可以在“构建”->“配置构建工具”->“配置”下选中一个简单的框。。。(按钮“使用Roxygen生成文档”)。

R按字母顺序加载文件。要更改顺序,可以使用描述文件中的Collate字段

# /DESCRIPTION
Collate:
    'Negate2.R'
    'Utils.R'
roxygen2提供了一种明确的方式,表示必须先加载一个文件,然后再加载另一个文件:@include。@include标记提供了一个以空格分隔的文件名列表,这些文件名应在当前文件之前加载:

#' @include class-a.r
setClass("B", contains = "A")
如果包中存在任何@include标记,roxygen2将在描述中设置Collate字段


为了使更改生效,您需要运行roxygen2文档的生成。

我相信您可以按照希望在
说明
文件的
整理:
中加载的顺序列出文件。哦,成功了:D.如果你将你的评论提升为答案,我会接受。可以使用
#@include xxxx.R
Roxygen评论自动填充描述文件的Collate字段。