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

Rya*_*ell 7 r build package

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

但是,因为此代码位于顶层,所以在解析后会对其进行评估.这意味着包文件的加载顺序很重要.

为了给出一个等效但简化的示例,假设我有一个包含两个文件的包(Negate2和Utils),并且我需要首先加载Negate2.R,以便定义函数'isfalse()'而不会抛出错误.

# /Negate2.R
Negate2 <- Negate

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

# /Utils.R
istrue <- isTRUE
isfalse <- Negate2(istrue)
Run Code Online (Sandbox Code Playgroud)

是否可以构建NAMESPACE,DESCRIPTION(整理)或其他包文件以更改文件的加载顺序?R包结构和CRAN的内部工作对我来说仍然是黑魔法.

使用笨拙的黑客可以解决这个问题,但解决这个问题的重复性最小的方法.包装函数必须是高阶函数,因为它还会更改其输入函数的函数调用语义.这个包很重(大约6000行,100个函数),所以重复会有问题.

正如@Manetheran所指出的,要更改加载顺序,只需更改DESCRIPTION文件中文件名的顺序即可.

# /DESCRIPTION
Collate:
    'Negate2.R'
    'Utils.R'
Run Code Online (Sandbox Code Playgroud)

Sco*_*hie 6

该文件的Collate:字段DESCRIPTION允许您更改构建包时加载的订单文件.

我在阅读时偶然发现了这个问题的答案Roxygen.如果您一直使用Roxygen记录您的函数,它可以尝试RCollate:字段中智能地排序源文件(基于S4类和方法定义的位置).这可以通过添加来完成"collate"roclets的参数roxygenize.或者,如果您正在开发RStudio中,可以在Build-> Configure Build Tools-> Configure ...("使用Roxygen生成文档"旁边的按钮)下查看一个简单的框.

  • `#' @include xxxx.R` Roxygen 注释可用于自动填充描述文件的整理字段。 (2认同)