我现在正在编写一个依赖于 Bing Maps Key的地理编码功能。显然我宁愿不发表我的,这些例子没有一个就失败了。
如何包含一个示例供用户手动运行,但在 期间不执行R CMD check
?
采用\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)
#'}
您可以使用\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{}
,请参阅上述讨论以了解解决方法。
对于那些使用@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
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 个升号。我总是在我的包中使用上面的“#' ## / #' #”技术。每当他/她想测试该功能时,用户就可以进行复制粘贴操作。在我看来,这种技术更类似于对软件编码哲学的经典评论轰炸。
\dontrun{}
是正确的功能。看这里:
出于说明的目的,包含导致错误的代码通常很有用。\dontrun{} 允许您在未运行的示例中包含代码。(您曾经可以将 \donttest{} 用于类似目的,但不再推荐,因为它实际上已经过测试。)