【问题标题】:How to define package examples that reference an S4 class in another package如何定义引用另一个包中的 S4 类的包示例
【发布时间】:2020-09-27 03:53:15
【问题描述】:

我正在构建一个扩展另一个包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 cmets 的相关部分以及相关泛型的定义:

#' @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 cmets 中为泛型,结果相同。

crmPack 出现在我的DESCRIPTION 文件的Imports: 部分,我的NAMSEPACE 文件包括import(crmPack)

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

【问题讨论】:

  • 您是否尝试使用crmPack::IncremensRelative 来确定在crmPack 中确实找不到该功能?
  • 是的,我做到了。在命令行。有效。但是您的评论让我想到了在roxygen 评论中使用x &lt;- crmPack::IncrementsRelative(...),这很有效。谢谢。

标签: r package s4 roxygen2 roxygen


【解决方案1】:

继@Waldi 的问题之后,我尝试了:

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

这运行没有错误。我还能够从roxygen cmets 中删除#' @import crmPack,但删除#' @importFrom methods .valueClassTest 导致devtools::check() 发出警告。

【讨论】:

  • 好的,这很清楚:如果您想让 crmPack 函数对您包的其他用户(以及示例)可用,您应该像使用自己的函数一样导出它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-06
  • 2018-03-31
  • 2019-08-31
  • 1970-01-01
  • 2017-01-04
  • 2019-11-08
相关资源
最近更新 更多