【问题标题】:How to stop a R package from executing an .R script?如何阻止 R 包执行 .R 脚本?
【发布时间】:2021-10-19 11:13:47
【问题描述】:

我正在准备包裹。在开发阶段,我想创建一个示例脚本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  

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

【问题讨论】:

  • 应该是“dontrun”而不是“donotrun”

标签: r package devtools roxygen


【解决方案1】:

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

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

(在停止示例的狭义上,我一直忘记什么是最新的,但您可以尝试所有 \dontrun{}\donttest{}、...以及对您设置的环境变量的显式条件。所有这些将在代码中可见,但可能不是您希望在文档中显示的内容。)

【讨论】:

    猜你喜欢
    • 2016-01-25
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 2018-05-27
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多