R帮助页面中的“不运行”是什么意思?


112

有时,在R帮助页面上,短语“未运行”会出现在注释中。从帮助页面中检查“ with()”:

Examples
require(stats); require(graphics)
#examples from glm:
**## Not run:** 
library(MASS)
with(anorexia, {
    anorex.1 <- glm(Postwt ~ Prewt + Treat + offset(Prewt),
                    family = gaussian)
    summary(anorex.1)
})
## End(**Not run**)

示例代码中的“不运行”是什么意思?


32
只是一个相关的提示。您可以通过发出“ example(glm)”来运行示例代码。
Eduardo Leoni

4
那是一个很好的提示。我敢打赌,绝大多数R用户都不知道这一点。
丹·戈德斯坦

1
但请注意example(fn)仍不会包含示例代码dontRun
蒂姆

除非您将run.dontrun参数设置为TRUE
Moody_Mudskipper,2018年

Answers:


77

“不运行”包含不应在example函数中执行的代码(例如,耗时的代码部分,用户交互等)。

参见例如?example

如《Writing R Extensions》手册中所述,帮助页面的作者可以为两个异常规则标记示例的一部分。

  • 'dontrun'包含不应运行的代码。

  • 'dontshow'包含了在帮助页面上不可见的代码,但是将由程序包检查工具和'example()'函数运行。以前是“ testonly”,现在仍接受该表格。


3
...我怎么不知道这个功能?
马特·帕克

5
通常不只是将耗时的代码放在\ dontrun {}中。需要用户输入的代码也必须放在dontrun内部,否则它将无法通过R CMD check
Dason 2012年

2
或:取决于可能未安装在用户计算机上的软件包的代码。使用\ dontrun {}的原因很多,很多
Jason

25

“编写R扩展”手册中,关于\ examples {...}的部分中提到

您可以将\ dontrun {}用于仅应显示但不能运行的文本,并将\ dontshow {}用于不应用于显示但将由example()运行的额外测试命令

当您生成一个包时,\ dontrun {}闭包中的所有代码在帮助中均显示为

## Not run:
...
## End(**Not run**)

编辑:这个答案是较早的。


15

\donttest{}是从@hadley的R Packages中获取的,并(取自)。

但是,出于说明目的,包含会导致错误的代码通常很有用。\dontrun{}使您可以在示例中使用从未使用过的代码。还有另外两个特殊命令。\dontshow{}运行,但未显示在帮助页面中:这对非正式测试很有用。\donttest{}在示例中运行,但在R CMD检查中不会自动运行。如果您的示例需要很长时间才能运行,这将很有用。选项总结如下。

Command      example    help       R CMD check
\dontrun{}                 x
\dontshow{}       x                          x
\donttest{}       x        x

2
请注意,现在已经测试了donttest
Tyler Rinker

1
对于包提交,您是否需要在.Rd中有任何其他注释来证明代码块的遗漏?由于有一个\ donttest {}示例,我进行了包失败检查,并且想知道将其更改为\ dontrun {}是否很简单。该函数用于从ftp下载数据,并且CRAN注释为:“。Rd文件中未对此注释。请注意,example()将运行这些部分”。
杰弗里·埃文斯

是的,应该就这么简单。
泰勒·林克

@TylerRinker您的意思是该功能已通过验证,或者在检查时CRAN运行了@donttest {}中的代码?
2015年

2
是的,这里引述了Hadley的书中的一句话:“出于说明的目的,通常包含会导致错误的代码。\ dontrun {}允许您在未运行的示例中包含代码。(以前能够将\ donttest {}用于类似目的,但由于实际上已经过测试,因此不再建议使用。)”
泰勒·林克

5

必须阅读的5.4章(R文档文件)中的C&p 创建R包: Friedrich Leisch 的教程

示例部分应包含可执行的R代码,并且自动运行代码是检查软件包的一部分。该示例有两个特殊的标记命令:

dontrun:\ dontrun {}内的所有内容都不由测试或example()执行。这很有用,例如,用于交互功能,访问Internet的功能等。不要滥用它,以举例说明一些无法执行的示例,以使您的生活更轻松。


3

此处的典型示例可能在帮助页面中rm

## Not run: 
## remove (almost) everything in the working environment.
## You will get no warning, so don't do this unless you are really sure.
rm(list = ls())

## End(Not run)

如果执行此操作,当然会产生不良影响。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.