113

我现在正在编写一个依赖于 Bing Maps Key的地理编码功能。显然我宁愿不发表我的,这些例子没有一个就失败了。

如何包含一个示例供用户手动运行,但在 期间不执行R CMD check

4

5 回答 5

176

采用\dontrun{}

#'@examples
#'\dontrun{
#'geocode("3817 Spruce St, Philadelphia, PA 19104")
#'geocode("Philadelphia, PA")
#'dat <- data.frame(value=runif(3),address=c("3817 Spruce St, Philadelphia, PA 19104","Philadelphia, PA","Neverneverland"))
#'geocode(dat)
#'}
于 2012-08-20T13:03:15.377 回答
44

您可以使用\donttest{}您的示例。该片段将在您的文档中提供,但不会使用 R CMD Check 进行测试。

更多信息 -->?example

#' @example
\donttest{
    2^2
    }

这个 2^2 不会在你运行时运行devtools::check()


编辑

根据最新的发行说明或R 4.0.0的新闻,现在将默认测试其中的示例。但是,这可以通过将环境变量设置为 来覆盖。\donttest{}_R_CHECK_DONTTEST_EXAMPLES_FALSE

R CMD check --as-cran 现在运行 \donttest 示例(由 example() 运行),而不是指示测试人员这样做。这可以在开发过程中通过将环境变量R_CHECK_DONTTEST_EXAMPLES设置为 false 值来临时规避。

根据这个GitHub 问题讨论(在此处记入),Hadley Wickham 指出

一般来说,现在如果你不想在 CRAN 上运行测试 \dontrun{} 更有可能工作,但使用 \dontrun{} 可能会导致初始提交失败。

还有其他方法可以让您继续使用donttest{},请参阅上述讨论以了解解决方法。

于 2017-07-09T15:01:02.127 回答
11

对于那些使用@example path/to/example.R而不是@examples标签的人,您可以\dontrun直接在example.R文件中使用环境。例如

# example.R
\dontrun{
# this is a long running example
for(i in seq(1, 1e5)) { lm(mpg ~ wt, data = mtcars) }
}

# some other shorter example
2 + 2
于 2017-04-28T03:37:50.667 回答
2

Ari,我也用 roxygen2(4.1.0 版)。以下是我的函数(gctemplate)定义中的 roxygen2 标记的结尾,直到实际部分的开头。

#' @examples
#' ## List all G-causalities in a VAR system of 5 variables that will be searched in the pattern of 1 
#' ## causer (like-independent) variable and 2 like-dependents conditional on 5-(1+2)=2 of the remaining 
#' ## variable(s) in the system. Variables are assigned to numbers 1 to nvars. 
#' ## "1 2 5 3 4" in the resulting line of gctemplate is to indicate the 
#' ## (conditonal, partial, etc.) G-causality from variable 1 to variables 2 and 5 
#' ## conditonal on variables 3 and 4.
#' # gctemplate(5,1,2)
#' ## The number of all G-causalities to be searched in the above pattern.
#' #dim(gctemplate(5,1,2))[[1]]
#' @importFrom combinat combn
#' @export
gctemplate <- function(nvars, ncausers, ndependents){
...

我知道 GSee 的 dontrun 方法。
在我的技术中,数值示例和解释数值示例的文本都是注释。我使用缩进来区分这两者;请注意,“#”之后分别有 1 个升号和 2 个升号。我总是在我的包中使用上面的“#' ## / #' #”技术。每当他/她想测试该功能时,用户就可以进行复制粘贴操作。在我看来,这种技术更类似于对软件编码哲学的经典评论轰炸。

于 2014-12-25T19:14:21.727 回答
1
\dontrun{}

是正确的功能。看这里:

出于说明的目的,包含导致错误的代码通常很有用。\dontrun{} 允许您在未运行的示例中包含代码。(您曾经可以将 \donttest{} 用于类似目的,但不再推荐,因为它实际上已经过测试。)

来源:https ://r-pkgs.org/man.html?q=donttest#man-functions

于 2021-06-16T15:17:16.740 回答