roxygen2(版本5.0)在函数内部发生#'时错误地创建文档

Dan*_*gan 9 r roxygen2

考虑以下R函数定义,使用roxygen2进行记录(版本> = 5.0)

#' @title Test Bug
#' @author Daniel Egan
#' @param x  
#' @return Nothing
#' @export
#' @examples
#' testFun(x)


testFun <- function(x){

  #' Warning1'
  return(TRUE)
}
Run Code Online (Sandbox Code Playgroud)

当使用devtools :: document()来记录它时,它会产生以下错误:

警告消息:
1:@examples [TestFun.R#8]:大括号或引号不匹配

请注意,"示例"部分中绝对没有不匹配的大括号或引号.是什么造成的?我该如何解决?

krl*_*mlr 7

这是由于最近的roxygen2包装变化.来自新闻:

现在还记录了记录的函数的内容以用于roxygen注释.这允许,例如,将参数的类型记录在接近检查此类型的位置,或者记录靠近源的实现细节,并简化将来的扩展,例如R6类的文档.

这意味着将解析代码块内的任何roxygen风格的注释.如果您的包的代码在函数内包含这样的注释,您可能希望用普通注释替换它们,即替换#'#.在这次一次性更改之后,除非有意,否则不要再在代码块中使用roxygen-style注释.

以下命令行(requires sed)将所有空格缩进的roxygen样式注释R/替换为当前目录子目录中所有文件中的普通注释:

sed -r -i"" "s/( +#)'/\1/" R/*
Run Code Online (Sandbox Code Playgroud)

根据您的需求进行调整.