我偶然发现在使用emmeans包的时候,没有办法获得pairs函数的帮助信息(但是确实可以正常使用pairs函数的,比如下面的例子)。如果我使用?pairs返回的帮助信息是关于graphics包里的pairs函数。我第一次遇到这种情况,不知道是什么原因?

library(emmeans)
lm_mod <- lm(len ~ supp + dose + supp:dose, data = ToothGrowth)
EMM <- emmeans(lm_mod, ~ supp * dose)
pairs(EMM, simple = "supp")
?pairs

paris是个S3的函数,它会根据传入的参数类型来自动选取应该调用哪个具体的函数实现。EMM是个emmGrid类型,所以pairs实际调用的是emmeans:::pairs.emmGrid这个函数,你用?emmeans:::pairs.emmGrid可以查看对应的文档。

当然,软件包里只给函数没写文档也是常有的事情……

另外关于S3、S4可以参考Advanced R里的相关章节

    fenguoerbian 感谢!追问一下,这个概念以前也简单接触过,比如常用的plotsummary函数(好像叫generic function),但是您是怎么判断pairs也是这种类型的函数,因为通过?pairs我似乎找不到线索。

      huyang

      You see, but you do not observe. ?pairs文档的函数使用的第三行就有

      ## S3 method for class 'formula'

      或者直接在命令行输入pairs回车,会看到

      function (x, ...) 
      UseMethod("pairs")
      <bytecode: 0x000002674ce9a208>
      <environment: namespace:graphics>

      也是一个提示

      或者sloop::is_s3_generic("pairs")也可以。