我正在开发一个带有RStudio的自定义R软件包,记录为roxygen2。
请考虑此功能:
#' Get "test"
#'
#' @return String
#' @export
#'
#' @examples getTest()
getTest <- function() {
return("test")
}
如果我使用上面编写的函数文档运行R CMD check
,一切正常,check
成功通过。
现在,如果我删除@export
(因为我不希望从包外部看到此函数),我会收到以下错误:
* checking examples ... ERROR
Running examples in 'MyPackageName-Ex.R' failed
The error most likely occurred in:
> ### Name: getTest
> ### Title: Get "test"
> ### Aliases: getTest
>
> ### ** Examples
>
> getTest()
Error: could not find function "getTest"
Execution halted
看起来@examples
中的函数测试是从包外部运行的??
如何测试未导出功能的示例?
答案 0 :(得分:4)
我恭敬地不同意@Roland的评论,因为在文档附近有一个例子有助于知道我在6个月后想到的是什么。使用check()
自动检查它意味着它有机会与代码保持同步。我没有在R文档中看到任何禁止或劝诫记录非出口函数。
幸运的是,您可以使用三个冒号:::
运算符调用未导出的函数。例如:
##' Drop specified dimension from an array
##'
##' Like drop(x) but only dropping specified dimensions.
##' There is no testing that the specified dimensions are actually singletons.
##' @param x array of at least d dimensions
##' @param d dimension(s) to drop
##' @return array x
##' @examples
##' x = array(1:4, dim=c(1, 2, 1, 2))
##' dx = MAST:::Drop(x, 1)
##' stopifnot(all(dim(dx)==c(2,1,2)))
##'
Drop <- function(x, d){
dim(x) <- dim(x)[-d]
x
}