【问题标题】:ignore script with roxygen2使用 roxygen2 忽略脚本
【发布时间】:2020-05-13 06:02:17
【问题描述】:

我正在编写一个在服务器上执行某些工作的包。我有一个更新表格的脚本,但我的意图不是手动和不频繁地运行它。它不是一个需要进入命名空间或任何东西的函数,只是一个脚本。

问题是,当我调用roxygen2::roxygenize() 时,它会运行此脚本并需要一段时间才能运行,这在我尝试开发交互式功能时非常烦人。我知道我可以在文档中的示例周围添加\donotrun{},但这在这种情况下不太有意义。有没有办法告诉 roxygen 不要打扰执行这个?

我考虑过把它变成一个函数,这样执行它就可以定义函数体,但这似乎有点偏颇。

任何建议都会很棒

【问题讨论】:

  • 确定应该执行哪个@examples 脚本不是roxygen2 的工作。为什么在这里添加\donotrun not 有意义?据我所知,这正是该宏的用途。
  • @r2evans 我试图抑制的部分不是示例的一部分,而是整个 .r 文件。该脚本不打算以交互方式运行,它只是生成一些运行其他函数所必需的数据。
  • 也许您可以将其保存为./inst/file.R,而不是./R/file.R。这些文件不是源文件,而是在安装时包含在包目录中。
  • 对于我的几个(内部)项目,我包括./inst/process.R,它介绍了该包(和/或依赖包)中功能的使用。我不将它用作小插图,尽管有人可能会从该文件中推断出一些包语义。它永远不会在包检查、文档或加载过程中获取或运行,但在任何情况下用户都可以使用该文件。 (请注意,该文件将在您的目录中为./inst/file.R,但是当有人install.packages(...) 时,它将是./file.R,而不是在inst 子目录中。)
  • @r2evans 效果很好。我认为最好不要将此文件与其他安装一起提供,因为我想控制如何创建该数据集。 inst 目录是什么意思?

标签: r package roxygen2


【解决方案1】:

对于新访问者,这不是 roxygen 文档中的函数代码;为此,最好用\donotrun 包围它,如

#' @examples
#' \donotrun{
#' something_goes_here()
#' }
myfunction <- function(...) {

不过,在这种情况下,它会在包本身中包含一些文件。

  1. 您放置在./inst/ 目录中的文件与软件包一起安装,但它们不被假定为 R 脚本(或其他任何东西)。对此的权威参考以 "Writing R Extensions", Section 1.1.5 Package sub-directories 开头。这将在通过install.packages(...) 安装软件包的每台计算机上安装文件。

  2. 1234563相同的链接,现在是第 1.3.2 节构建包 tarball)。与这些模式匹配的文件不会包含在包 tarball 中。是否将实际文件放在 ./inst/ 或其他任何地方完全取决于您:如果它位于 .Rbuildignore 文件中,那么它将从 tarball 中排除(因此最终用户可以看到/找到)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 2021-01-26
    • 2018-03-26
    • 1970-01-01
    相关资源
    最近更新 更多