如何阻止 R 包执行 .R 脚本?

How to stop a R package from executing an .R script?

我正在准备包裹。在开发阶段,我想创建一个示例脚本 example.R,我可以用它来检查我的包的不同功能。但是,我不希望在更新包时执行我的示例脚本。这是我面临的挑战:

假设我的 example.R 有以下代码:

print("Hello")

如果,我更新并保存我的包:

devtools::document()
# Actual Output: [1] "Hello"
# Desired Output: It should be blank. Code in Example.R script should not be executed  

我已经尝试了各种其他选项,但到目前为止都没有成功:

  1. 尝试 @examples
#' @examples
print("Hello")

如果,我更新并保存我的包:

devtools::document()
# Actual Output: [1] "Hello"
# Desired Output: It should be blank. Code in Example.R script should not be executed  
  1. 尝试 \dontrun{}
#' \dontrun{
print("Hello")
#'}

如果,我更新并保存我的包:

devtools::document()
# Actual Output: [1] "Hello"
# Desired Output: It should be blank. Code in Example.R script should not be executed  

似乎唯一可行的方法是注释整个代码:

# print("Hello")

如果,我更新并保存我的包:

devtools::document()
# Actual Output:
# Desired Output: It should be blank. Code in Example.R script should not be executed  

评论很有挑战性,因为我有多行代码,我将在开发阶段不断更改和编辑这些代码。因此我需要一个更简单的选项。

如果您查看包的 Writing R Extensions 手册,它提供了三个基本步骤:R CMD build 创建 tarball,R CMD INSTALL 安装它(不是你的目标)和 R CMD check 在开发过程中检查它。他们都提供 numerous 开关来调整行为。使用那些 - 即我经常 R CMD check --no-manual --no-vignettes 跳过 pdf / latex 部分。

并且 R CMD check 有您正在寻找的 --no-examples 标志。我不是 devtools 的活跃用户,但我怀疑它也为您提供了这些选项的传递。而且,最坏的情况是,如果没有,只需使用标准工具。 (在 RStudio 中,您会找到一个开关,您可以像在命令行上一样为 R CMD ... 调用设置选项。)

(在停止示例的狭义意义上,我总是忘记当前的内容,但您可以尝试所有 \dontrun{}\donttest{}、...以及对环境变量的显式条件你设置。所有这些都将在代码中可见,但可能不是你想要在文档中显示的内容。)