获取对象方法R.

C. *_*eed 48 r

给定一个任意的R对象,我如何获得与该对象相关的所有方法?

mat*_*fee 54

我能想到的最接近的是methods(如果是S3对象/功能List all available methods for an S3 generic function, or all methods for a class.),或者showMethods(如果是S4).

例如:

> A <- matrix(runif(10))
> B <- methods(class=class(A))
> B
 [1] anyDuplicated.matrix as.data.frame.matrix as.raster.matrix*   
 [4] boxplot.matrix       determinant.matrix   duplicated.matrix   
 [7] edit.matrix*         head.matrix          isSymmetric.matrix  
[10] relist.matrix*       subset.matrix        summary.matrix      
[13] tail.matrix          unique.matrix       

   Non-visible functions are asterisked
> attr(B,'info')
                     visible                from
anyDuplicated.matrix    TRUE        package:base
as.data.frame.matrix    TRUE        package:base
as.raster.matrix       FALSE registered S3method
boxplot.matrix          TRUE    package:graphics
determinant.matrix      TRUE        package:base
duplicated.matrix       TRUE        package:base
edit.matrix            FALSE registered S3method
head.matrix             TRUE       package:utils
isSymmetric.matrix      TRUE        package:base
relist.matrix          FALSE registered S3method
subset.matrix           TRUE        package:base
summary.matrix          TRUE        package:base
tail.matrix             TRUE       package:utils
unique.matrix           TRUE        package:base
Run Code Online (Sandbox Code Playgroud)

或者功能:

> methods(summary)
 [1] summary.aov             summary.aovlist         summary.aspell*        
 [4] summary.connection      summary.data.frame      summary.Date           
 [7] summary.default         summary.ecdf*           summary.factor         
[10] summary.glm             summary.infl            summary.lm             
[13] summary.loess*          summary.manova          summary.matrix         
[16] summary.mlm             summary.nls*            summary.packageStatus* 
[19] summary.PDF_Dictionary* summary.PDF_Stream*     summary.POSIXct        
[22] summary.POSIXlt         summary.ppr*            summary.prcomp*        
[25] summary.princomp*       summary.srcfile         summary.srcref         
[28] summary.stepfun         summary.stl*            summary.table          
[31] summary.tukeysmooth*   

   Non-visible functions are asterisked
Run Code Online (Sandbox Code Playgroud)

?Methods 也可能证明是有用的阅读.


42-*_*42- 12

R对象的类被恢复class.在典型的R术语中,对象没有与它们相关的方法.对象的类确定将应用于哪些函数方法.为了确定哪些函数具有与给定类关联的方法,您需要测试所有可用函数以查看是否存在特定于类的方法.即使这样,通用函数也会尝试在大多数情况下使用"默认"方法.

显示与通用S3功能相关的一些方法methods.恢复S4功能的方法showMethods.因此,对于大多数人称之为"对象"的问题,你的问题没有意义,但如果碰巧你在一般术语"对象"(这在技术上是公平的)下包含函数,那么我已经回答了.

showMethods(classes="data.frame")
methods(class="data.frame")
Run Code Online (Sandbox Code Playgroud)

然后有一组方法可能被称为"隐式",尽管它们的R名称是"groupGeneric"

 ?groupGeneric

 methods("Math") # These are "add-on" methods to the primitive Math functions
 [1] Math.data.frame  Math.Date        Math.dates*      Math.difftime    Math.factor     
 [6] Math.mChoice     Math.polynomial* Math.POSIXt      Math.ratetable*  Math.Surv*      
[11] Math.times*     

   Non-visible functions are asterisked
 ?"+"

 methods("Ops")  # The binary operators such as "+", "-", "/"
 [1] Ops.data.frame      Ops.Date            Ops.dates*          Ops.difftime        Ops.factor         
 [6] Ops.findFn          Ops.mChoice         Ops.numeric_version Ops.ordered         Ops.polynomial*    
[11] Ops.POSIXt          Ops.raster*         Ops.ratetable*      Ops.Surv*           Ops.times*         
[16] Ops.ts*             Ops.unit*           Ops.yearmon*        Ops.yearqtr*        Ops.zoo*           

   Non-visible functions are asterisked
Run Code Online (Sandbox Code Playgroud)

即便如此,您还没有真正展示Math或Ops系列的成员,但您可以在帮助页面中看到它们?groupGeneric.你没有看到Ops.numeric.较低级别的视图由以下提供:

 .Primitive("+")
# function (e1, e2)  .Primitive("+")
Run Code Online (Sandbox Code Playgroud)

如果提供了错误的类参数,这些将抛出错误.