首页 > 解决方案 > 如何定义引用另一个包中的 S4 类的包示例

问题描述

我正在构建一个扩展另一个包的功能的包,crmPack. crmPack使用 S4 类。我roxygen用来记录我的新包裹。devtools::check()在我的新包上运行时出现错误:

> checking examples ... ERROR
  Running examples in ‘crmreporter-Ex.R’ failed
  The error most likely occurred in:

  > base::assign(".ptime", proc.time(), pos = "CheckExEnv")
  > ### Name: summariseIncrementsRule
  > ### Title: Create a Tibble Describing an Increments Rule
  > ### Aliases: summariseIncrementsRule
  > 
  > ### ** Examples
  > 
  > if (requireNamespace("crmPack")) {
  +   inc <- IncrementsRelative(intervals=c(0, 20), increments=c(1, 0.33))
  +   summariseIncrementsRule("inc")
  + }
  Error in IncrementsRelative(intervals = c(0, 20), increments = c(1, 0.33)) : 
    could not find function "IncrementsRelative"
  Execution halted

这是评论的相关部分roxygen和相关泛型的定义:

#' @examples
#' if (requireNamespace("crmPack")) {
#'   inc <- IncrementsRelative(intervals=c(0, 20), increments=c(1, 0.33))
#'   summariseIncrementsRule(inc)
#' }
#' @import crmPack
#' @importFrom methods .valueClassTest
#' @export
setGeneric("summariseIncrementsRule", valueClass = "tbl", function(object) {
  standardGeneric("summariseIncrementsRule")
})

我也试过

#' @importFrom crmPack IncrementsRelative

roxygen泛型的评论中,结果相同。

crmPack出现在Imports:我的说明文件部分中,我的 NAMSEPACE 文件包括import(crmPack).

我应该如何记录我的泛型以使其示例正确运行?[从控制台运行时会发生什么。]

标签: rpackages4roxygen2roxygen

解决方案


Following on from @Waldi's question, I tried:

#' @examples
#' if (requireNamespace("crmPack")) {
#'   inc <- crmPack::IncrementsRelative(intervals=c(0, 20), increments=c(1, 0.33))
#'   summariseIncrementsRule(inc)
#' }

And this ran without error. I was also able to remove #' @import crmPack from the roxygen comments, but removing #' @importFrom methods .valueClassTest caused devtools::check() to issue a warning.


推荐阅读