为 CRAN 包创建简短示例

Creating short examples for CRAN package

我目前正在构建一个我希望上传到 CRAN 的包。我在我的帮助文档中包含的示例目前需要一些时间来检查(总共约 12 分钟),并且我知道在尝试加载 CRAN 时这可能是一个问题。虽然我可以使我的示例 运行 更快,但我担心这会降低它们对阅读帮助文件的用户的意义。有没有一种方法可以包含一些快速(但意义不大)的示例,这些示例将由 CRAN 检查但在帮助文档中对用户不可见?

我正在使用 devtools 和 roxygen2 编写我的文档,所以如果可能的话,使用这些工具获得答案会很棒。

感谢您的帮助。

参见第 2.1.1 节 manualexample 小节。您可以将更重的示例包含在 \dontrun 中,它们将不会被检查。

听起来您想做一些单元测试,这在处理更复杂的包时是个好主意。查看 testthat 包 (article, source)。

确保包的正确操作所需的简短纯技术示例,但与最终用户不太相关,然后将进入单独的文件夹 myPackage/tests。这些将在您每次构建包时自动 运行,但不会包含在文档文件中。

推荐的解决方案是制作一个名为 myPackage/tests/run-all.R:

的文件
library(testthat)
library(myPackage)
test_package("myPackage")

然后将所有测试代码放入myPackage/tests/testthat,例如myPackage/tests/testthat/foo.R:

context("Basic operation")

test_that("Default execution", {
    a <- 4
    b <- 34
    expect_equal(myFunction(a, b), a + b)
})

将测试放在 myPackage/tests/testthat 而不是直接放在 myPackage/tests 的原因是 myPackage/tests/testthat 将包含在最终包中(尽管在不同的文件夹中),这允许用户也 运行 测试。 myPackage/tests不会复制到最终包中。

如果唯一的问题是 CRAN 加载,您应该使用 \donttest{} 命令来防止 运行 在 CRAN 上加载示例。请注意,当用户键入 example(xx)

时,示例仍将 运行