【问题标题】:Use Roxygen to make S3method in NAMESPACE在 NAMESPACE 中使用 Roxygen 制作 S3 方法
【发布时间】:2015-03-31 03:32:13
【问题描述】:

我想使用 roxygen2 导出一个名为 [.myclass 的 S3 方法,但我看不到这样做的干净方法。

我需要 NAMESPACE 才能拥有

S3method("[",myclass)

在我需要这个包之后或者方法无法使用,但是roxygen2似乎不想帮我解决这个问题。

我可以强制它使用

#' @S3method [ myclass
setMethodS3("[",
        c(x="myclass"),
        function(x,i) {
blah blah balh
})

但是 roxygen 然后说 s3method 已弃用,我应该改用 @export,但是

#' @export
setMethodS3("[",
          c(x="myclass"),
          function(x,i) {
  blah blah balh
 })

只是不这样做。 (在 NAMESPACE 中放置一个空的导出)。

我询问了包的作者,他建议我使用@method 和@export,但这也不起作用

#' @method [ myclass
#' @export
setMethodS3("[",
          c(x="myclass"),
          function(x,i) {
  blah blah balh
 })

在命名空间中也以“export()”结尾

我错过了什么?

【问题讨论】:

  • 您应该将答案作为答案发布,而不是在您的问题中发布答案。发布您自己问题的答案并没有错。
  • 完成。感谢您的提示。

标签: r roxygen2


【解决方案1】:

答案:

Hadley 非常有帮助,现在我意识到我不应该使用 setMethodS3,而应该只使用

#' @method [ myclass
#' @export
"[.myclass" <- function(x,i) { blah blah blah }

然后一切正常。

【讨论】:

  • 这在 R 4.0.0 中变得更加严格
猜你喜欢
  • 1970-01-01
  • 2018-04-08
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-22
相关资源
最近更新 更多