R包 - 如果未导出该函数,则无法测试@example函数

时间:2015-12-10 08:04:57

标签: r

我正在开发一个带有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中的函数测试是从包外部运行的??

如何测试未导出功能的示例?

1 个答案:

答案 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
    }