我写了一个用于整合电子病历的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.
我想我已经记录了这些与我所有其他功能相同的方式。以下是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)
}
如何摆脱这个错误?我已将{string}和RSQLite添加到DESCRIPTION文件的depends部分,它们显示在NAMESPACE中,所以我认为这不是一个导入问题 - 但那么我没有记录什么?完整包是here,包含违规函数的文件的文件是here。我已经看过写R扩展手册,但找不到问题 - 不知道我是不是只是看不清楚 - 但我看不出我在这些函数中做的与我写的其他函数有什么不同!
答案 0 :(得分:8)
你使用roxygen,但很可能你不会在构建时对你的包进行氧气化。
要么致电:
roxygen2::roxygenize('.', roclets=c('rd', 'collate', 'namespace'))
或者,如果您使用RStudio,请编辑项目选项(工具菜单),然后在构建工具选项卡中选中使用Roxygen生成文档。
答案 1 :(得分:4)
修改强>
.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]]
}
这是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
答案 2 :(得分:2)
我在执行R CMD check
时遇到了类似的问题:
Status: 1 WARNING
checking for missing documentation entries ... WARNING
Undocumented code objects:
‘build.log.output’
逐步删除所有文件后,我找到了原因:.Rbuildignore
文件!它包含(除了其他行)一行
^.*\.log
最后一行使R忽略其名称中包含“.log”的所有文件,并且我的函数名为“build.log.output”,这导致R忽略生成的文档文件“build.log.output.Rd”创建包文件时,通过 Roxygen2 。
因此R CMD check
无法在包文件中找到文档!
<强>解决方案:强>
改进正则表达式以仅忽略真实的日志文件:
^.*\.log$
(“$”表示匹配行尾。)
Voila: - )
答案 3 :(得分:0)
我通过安装installr, testthat, roxygen2
包修复了同样的错误消息。
就我而言,我在新笔记本电脑上创建了一个新软件包并安装了所有常用的rtools
软件包和附件:MiKteX
以及devtools
和{{等附件工具1}}。构建包时,我得到了相同的错误消息&#34;检查缺少的文档条目...警告:未记录的代码对象&#34;。但我通过安装{{1}}包完全解决了这个问题。
答案 4 :(得分:0)
当我有多个要导出的函数时,我遇到了未记录的代码错误。我想你需要添加#&#39; @describeIn。这是我的榜样。
#' @title Colors Definition
#'
#' @description Define colors with transparency value.
#'
#' @param alpha Transparency value (0-1), default 1.
#'
#' @return hex value of the color
#'
#' @examples
#' Get_Red(0.5)
#' Get_Red()
#'
#' @export Get_Red
#' @export Get_Blue
#'
Get_Red <- function(alpha = 1) {
rgb(228 / 255, 26 / 255, 28 / 255, alpha)
}
#' @describeIn Get_Red Blue color function with transparency value.
Get_Blue <- function(alpha = 1) {
rgb(55 / 255, 126 / 255, 184 / 255, alpha)
}
答案 5 :(得分:0)
我正在尝试玩具 foofactors
包装 in Hadley Wickam's 书。我的 data.R
文件包括:
#' A character string
#'
"MyString"
和 fbind.R
有:
#' Print a string
#'
#' Returns the string MyString
#'
#' @export
#'
myString <- function() {
print(foofactors::MyString)
}
check
抱怨存在未记录的代码和数据。我通过将函数名称更改为 theString
来解决此问题。因此,名称似乎不区分大小写,这很奇怪。