R 如何为新的S3类导出新的泛型函数?

R 如何为新的S3类导出新的泛型函数?,r,package,r-s3,R,Package,R S3,我定义了一个新函数work\u与我的新S3类myS3配合使用: work_with_myS3 = function (x) { UseMethod("work_with_myS3", x) } work_with_myS3.myS3 = function(x) { some code } 当我在正常的R会话(我使用的是RStudio)中生成这个源代码时,它的行为完全符合预期。当我给它一个myS3对象时,它工作了;当我给它输入奇怪的东西时,它会抛出一个错误: > work_w

我定义了一个新函数
work\u与我的新S3类
myS3
配合使用:

work_with_myS3 = function (x) {
   UseMethod("work_with_myS3", x)
}

work_with_myS3.myS3 = function(x) {
   some code
}
当我在正常的R会话(我使用的是RStudio)中生成这个源代码时,它的行为完全符合预期。当我给它一个
myS3
对象时,它工作了;当我给它输入奇怪的东西时,它会抛出一个错误:

> work_with_myS3(123)
Error in UseMethod("work_with_myS3", x) : 
  no applicable method for 'work_with_myS3' applied to an object of class "c('double', 'numeric')"
但是,当我将其包含在包中时,构建它,重新加载它并尝试调用它:

Error: could not find function "work_with_myS3"
尽管如此,帮助页面仍然可以正常工作,可以调用
?使用\u myS3
。这就是我通过
devtools::document()
编写文档的方式:

命名空间中还有一个条目:

S3method(work_with_myS3,myS3)

为什么会这样,以及如何在包中提供该功能?我怀疑我犯了一些小错误。

当你调用
work\u with\u myS3
类对象
myS3
时,
UseMethod
函数查找:

  • 与myS3.myS3一起工作
  • 与myS3一起工作。默认值
  • 因此,您需要导出
    与_myS3.myS3一起工作,因此

    #' @export
    work_with_myS3.myS3 = function(x) {
      ## do stuff
    }
    

    或者,您可以定义一个
    default
    方法并将其导出。

    定义一个默认方法?所以基本上,它是关于@export标记的位置,对吗?
    #' @export
    work_with_myS3.myS3 = function(x) {
      ## do stuff
    }