使用 Roxygen 在 NAMESPACE 中制作 S3method

Use Roxygen to make S3method in NAMESPACE

我想使用 roxygen2 导出一个名为 [.myclass 的 S3 方法,但我看不到一个干净的方法来执行此操作。

我需要 NAMESPACE 才能拥有

S3method("[",myclass)

在里面或者方法在我require包后无法使用,但是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
 })

只是不这样做。 (在命名空间中放置一个空导出)。

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

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

在 NAMESPACE

中也以 "export()" 结尾

我错过了什么?

答案:

Hadley 帮了大忙,现在我意识到我不应该使用 setMethodS3,而应该使用

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

然后一切正常。