【问题标题】:roxygen2 "Error: titlerequires a value"roxygen2“错误:标题需要一个值”
【发布时间】:2011-10-06 17:38:19
【问题描述】:

我从roxygenize() 收到一个我无法理解的错误。我有一个杂项函数包,其中 .Rd 文件是通过 roxygen 生成的。

错误为Error: titlerequires a value,表示没有@title标签。但是kmmisc-package.R文件中有一个@title标签,所以我不确定是什么问题。

kmmisc-package.R 包含:

##' Miscellaneous Functions
##' 
##' \tabular{ll}{
##' Package: \tab kmmisc\cr
##' Type: \tab Package\cr
##' Version: \tab 0.1-2\cr
##' Date: \tab 2011-10-06\cr    
##' License: \tab GPL-2\cr
##' LazyLoad: \tab yes\cr
##' LazyData: \tab yes\cr
##' }
##' 
##' @author Me \email{my@@email}
##' 
##' Maintainer: Me \email{my@@email}
##'
##' @name kmmisc-package
##' @docType package
##' @title KM Misc
##' @keywords package
##' 
NULL

我正在使用 R 2.13.2 和刚刚从 CRAN 重新安装的 roxygen2 2.1。完整的sessionInfo() 位于https://gist.github.com/1268056 的要点中

编辑

在@andrie 的建议下,我现在有了

#' Miscellaneous Functions
#' 
#' \tabular{ll}{
#' Package: \tab kmmisc\cr
#' Type: \tab Package\cr
#' Version: \tab 0.1-2\cr
#' Date: \tab 2011-09-14\cr    
#' License: \tab GPL-2\cr
#' LazyLoad: \tab yes\cr
#' LazyData: \tab yes\cr
#' }
#' 
#' @author Me \email{my@@email}
#' 
#' Maintainer: Me \email{my@@email}
#' @name package-kmmisc
#' @docType package
#' @title KM Misc
#' @keywords package
#' @aliases kmmisc package-kmmisc
#'
#' 
NULL

仍然产生同样的错误。

【问题讨论】:

  • 我刚刚发现maintainer 没有@。这有什么不同吗?
  • 我不这么认为。我可能忽略了一些东西,但据我所知,我的基本结构与 roxygen 文档相同:github.com/klutometis/roxygen/blob/master/R/roxygen.R 我没有示例或也没有看到,但我认为这并不重要。
  • 还有一个建议:升级到roxygen2。我发现当它遇到 roxygen 行中的错误时,它的提示更加宽容和有帮助。
  • 不幸的是,这是 roxygen2 (ver. 2.1)。
  • github.com/klutometis/roxygen/issues 提交错误。我最近没有太多时间在 roxygen2 上工作,但这样它就不会迷路

标签: r roxygen roxygen2


【解决方案1】:

我无法从您的第一个代码中复制错误... 您是否从roxygenize() 收到与以下简单示例相同的错误消息?

#' A test function
#'
#' Description
#'
#' Details
#'
#' @param x numeric number
f1 <- function(x) {
  x
}

附加信息

@Andrie 的代码#' @aliases kmmisc package-kmmisc 有一个@aliases problem。 在 roxygen2 2.1 中,带有连字符的 #' @aliases a-b 生成 Rd 引用标签 \alias{"a-b"}。 在这种情况下代码没有问题,但在其他情况下需要注意。 当然,如果你需要引用标签,你添加#' @aliases a-b

所以我认为在这种情况下最好将#' @aliases kmmisc package-kmmisc替换为#' @aliases kmmisc

#' Miscellaneous Functions
#'
#' \tabular{ll}{
#' Package: \tab kmmisc\cr
#' Type: \tab Package\cr
#' Version: \tab 0.1-2\cr
#' Date: \tab 2011-09-14\cr
#' License: \tab GPL-2\cr
#' LazyLoad: \tab yes\cr
#' LazyData: \tab yes\cr
#' }
#'
#' @author Me \email{my@@email}
#'
#' Maintainer: Me \email{my@@email}
#' @name package-kmmisc
#' @aliases kmmisc
#' @docType package
#' @title KM Misc
#' @keywords package
NULL

【讨论】:

  • 这就是我想要解决的问题:github.com/klutometis/roxygen/pull/29 但在这里我看不出标题因别名错误而损坏的任何原因。
  • 抱歉跑题了。我修改了我的帖子。我期待修复:#29。
【解决方案2】:

尝试以下方法:

  • 取消注释您的 roxygen 语句。 (这可能是一个 SO 人工制品,但每个 roxygen 行应该以 # ' 开头,即单个 #

  • 对文档进行以下更改

#' @name 包-kmmisc #' @aliases kmmisc 包-kmmisc

换句话说:

  • 更改@name的值
  • 添加一个名为kmmisc的别名

这些是您的示例和我自己的包文档之间的唯一区别。

【讨论】:

  • 这些编辑我仍然得到同样的错误(见上面的编辑)。但总的来说,## ' 真的有问题吗?这就是 ESS 默认所做的(至少我认为我有默认设置)。
  • 如果## 适合你,那太好了,我学到了一些东西。我使用 Eclipse,而 Roxygen 代码突出显示仅适用于单个 #
  • 我可以确认##' 确实有效。正如 Kevin 所说,这是 Emacs 中的默认前缀。我在代码中没有看到任何明显的问题,实际上我可以使用它运行 roxygen2 而不会出现任何错误(Ubuntu 下的 R 2.13.2)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多