R包生成未记录的代码对象

R包生成未记录的代码对象,r,devtools,R,Devtools,我已经编写了一个与电子病历集成的R包。我想我已经在描述文件中正确地添加了导入和依赖项,并通过roxygen2记录了所有内容,但是在我的三个函数(它们都在同一个文件中)上,当我运行devtools::check(“.”)时,我收到了这个警告: 我想我已经用与我所有其他函数相同的方式记录了这些函数,它们都很好。以下是roxygen2文档中有问题的函数之一: #' Wrapper for dbconnect #' #' Connects to a SQLite database or creates

我已经编写了一个与电子病历集成的R包。我想我已经在描述文件中正确地添加了导入和依赖项,并通过roxygen2记录了所有内容,但是在我的三个函数(它们都在同一个文件中)上,当我运行devtools::check(“.”)时,我收到了这个警告:

我想我已经用与我所有其他函数相同的方式记录了这些函数,它们都很好。以下是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)
}
dbconnect的包装器 #' #'连接到SQLite数据库或创建一个数据库(如果该数据库尚不存在) #' #'如果从dbname参数中删除了'.sqlite'文件扩展名,则会自动添加该扩展名。 #' #“@出口 #' #“@param dbname数据库文件的字符名路径 #“@return SQLiteConnection对象 #'@examples\dontrun{
#'db您使用roxygen,但最有可能的情况是,您没有在构建时对包进行roxygenize

电话:

roxygen2::roxygenize('.', roclets=c('rd', 'collate', 'namespace'))
或者,如果使用RStudio,请编辑项目选项(工具菜单),并在“生成工具”选项卡中选中“使用Roxygen生成文档”。

编辑:

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


这里也有同样的问题。对我来说,它与函数的名称有关。当下面函数的名称为
load\u rda
(或
loadrdata
)时,我收到警告
未记录的代码对象:“load\u rdata”
。当我将函数重命名为
load\u 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]]
}

在执行
R CMD检查时,我遇到了类似的问题:

Status: 1 WARNING
checking for missing documentation entries ... WARNING
Undocumented code objects:
  ‘build.log.output’
在一步一步地删除所有文件之后,我找到了原因:
.Rbuildignore
文件!它包含(除其他行外)一行

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

因此,
R CMD check
无法在包文件中找到文档

解决方案:

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

^.*\.log$
(“$”表示与行尾匹配)


瞧:-)

我通过安装
devtools
包修复了相同的错误消息


在我的例子中,我在一台新笔记本电脑上创建了一个新软件包,并安装了所有常见的
R
软件包和附件:
installr、testthat、roxygen2
,以及
rtools
MiKteX
等附件工具。在构建软件包时,我收到了相同的错误消息“检查缺少的文档条目…警告:未记录的代码对象”。但是我通过安装
devtools
包完全解决了这个问题。

当我有多个函数要导出时,我遇到了未记录的代码错误。我想您需要添加#'@descripbein。下面是我的示例

#' @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)
}
#@标题颜色定义
#'
#“@description使用透明度值定义颜色。
#'
#“@param alpha透明度值(0-1),默认值为1。
#'
#“@返回颜色的十六进制值
#'
#“@示例
#“获得红色(0.5)
#"红()"
#'
#“@export-Get\u-Red
#“@export Get_蓝
#'

获取红色我正在试验玩具
foofactors
包装书。我的
data.R
文件包括:

#' A character string
#'
"MyString"
fbind.R
had:

#' Print a string
#'
#' Returns the string MyString
#'
#' @export
#'
myString <- function() {
  print(foofactors::MyString)
}
#“打印字符串
#'
#'返回字符串MyString
#'
#“@出口
#'

myString我从github克隆了这个包并运行了
devtools::check(“.”)
*检查缺少的文档条目…好吧
这太奇怪了!你在什么平台上运行?我通过rstudio服务器在Linux服务器上。我现在也会通过rstudio服务器检查。同样,Linux服务器也通过rstudio服务器确定,所以克隆构建得很好,但我仍然在工作目录中得到错误。这是一种解脱,但仍然是一种错误不知道它是从哪里来的。谢谢。我正在Rstudio中运行,当check()运行时,文档将与命名空间一起生成。尝试删除所有rd文件并重新检查,但没有效果。所有其他rd文件都生成良好。@dspringate我无法复制它。克隆了repo,roxygenize(Roxygen 4.0.1)了吗所有的RD都在那里.R 3.1在Fedora x86_64上。为了避免警告,请将
编码:UTF-8
添加到您的描述文件中。我还发现,对我的
.R
文件做一个小的更改,然后调用
devtools::load_all(“.”
,然后是
devtools::document()
,然后是
devtools::check(.”)
为我修复了此问题。在Windows计算机上的驱动器之间移动程序包目录后,我遇到了此问题。我认为文档没有正确更新,但通过一个小的更改,文档确实得到了更新,然后R CMD检查通过。
#' A character string
#'
"MyString"
#' Print a string
#'
#' Returns the string MyString
#'
#' @export
#'
myString <- function() {
  print(foofactors::MyString)
}