R包构建未记录的代码对象

dsp*_*ate 16 r devtools

我写了一个R包,用于整合电子病历.我想我已经在DESCRIPTION文件中正确添加了导入和依赖项,并通过roxygen2记录了所有内容,但是我的三个函数(都在同一个文件中)我在运行devtools :: check("."时收到此警告. ):

* checking for missing documentation entries ... WARNING
Undocumented code objects:
  'add_to_database' 'database' 'import_CPRD_data'
All user-level objects in a package should have documentation entries. 
Run Code Online (Sandbox Code Playgroud)

我想我已经记录了这些与我所有其他功能相同的方式.以下是roxygen2文档中的一个违规函数:

#' Wrapper for dbconnect
#' 
#' Connects to a SQLite database or creates one if it does not already exist
#' 
#' If the '.sqlite' file extension is ommited from the dbname argument it is automatically added.
#'
#' @export
#' 
#' @param dbname character name path to database file
#' @return SQLiteConnection object
#' @examples \dontrun{
#' db <- database("mydb")
#' }
database <- function(dbname){
    if(!str_detect(dbname, "\\.sqlite$")) {
        dbname <- paste(dbname, "sqlite", sep = ".")
    } 
    dbConnect(SQLite(), dbname)
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能摆脱这个错误?我已经在DESCRIPTION文件的depends部分添加了stringr和RSQLite ,它们出现在NAMESPACE中,所以我不认为这是一个导入问题 - 但那么我没有记录什么?完整的包在这里,带有违规功能的文件的文件在这里.我已经看过写R扩展手册,但找不到问题 - 不知道我是不是只是看不清楚 - 但我看不出我在这些函数中做的与我写的其他函数有什么不同!

gag*_*ews 9

你使用roxygen,但很可能你不会在构建时对你的包进行氧化.

要么致电:

roxygen2::roxygenize('.', roclets=c('rd', 'collate', 'namespace'))
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用RStudio,请编辑"项目选项"("工具"菜单),然后在"构建工具"选项卡中选中" 使用Roxygen生成文档".


R Y*_*oda 6

我在执行以下操作时遇到了类似的问题R CMD check

Status: 1 WARNING
checking for missing documentation entries ... WARNING
Undocumented code objects:
  ‘build.log.output’
Run Code Online (Sandbox Code Playgroud)

一步一步删除所有文件后,我找到了原因:.Rbuildignore文件!它包含(除了其他行)一行

^.*\.log
Run Code Online (Sandbox Code Playgroud)

最后一行使 R 忽略其名称中包含“.log”的所有文件,我的函数被命名为“build.log.output”,这导致 R 忽略由Roxygen2生成的文档文件“build.log.output.Rd”,当创建包文件。

因此R CMD check在包文件中找不到文档!

解决方案:

改进正则表达式以仅忽略真实的日志文件:

^.*\.log$
Run Code Online (Sandbox Code Playgroud)

(“$”表示匹配行尾)。

瞧:-)


hpl*_*ger 5

编辑:

@R Yoda 解决了我的“答案”中所述的问题:它与.Rbuildignore和 函数名称(更准确地说,函数文档的文件名)之间的冲突有关。


同样的问题在这里。对我来说,这与函数的名称有关。当下面函数的名称是load_rdata(或loadrdata)时,我收到警告Undocumented code objects: 'load_rdata'。当我将函数重命名为 时load_rda,一切都很好。

我知道这是一个问题(为什么会发生这种情况),一个答案(可能是因为函数名称),但我认为这可能会帮助遇到这个问题的人。

#' Load RData file.
#' 
#' @param file An RData file saved via \code{\link[base]{save}}.
#' @return The object save in \code{file}.
#' @references \url{http://stackoverflow.com/a/5577647}
#' @export
load_rdata <- function(file = NULL) {
    env <- new.env()
    nm <- load(file, env)[1]
    env[[nm]]
}
Run Code Online (Sandbox Code Playgroud)

这是sesssionInfo()使用 devtools 1.12.0 和 roxygen2 6.0.0 时的输出并且可以重现。

R version 3.3.2 (2016-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

locale:
[1] LC_COLLATE=German_Germany.1252  LC_CTYPE=German_Germany.1252    LC_MONETARY=German_Germany.1252
[4] LC_NUMERIC=C                    LC_TIME=German_Germany.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] devtools_1.12.0.9000 roxygen2_6.0.0.9000 

loaded via a namespace (and not attached):
 [1] R6_2.2.0            magrittr_1.5        tools_3.3.2         withr_1.0.2         memoise_1.0.0      
 [6] Rcpp_0.12.9         xml2_1.1.1          stringi_1.1.2       pkgload_0.0.0.9000  digest_0.6.12      
[11] stringr_1.1.0       pkgbuild_0.0.0.9000 commonmark_1.1 
Run Code Online (Sandbox Code Playgroud)