2013-04-16 6 views
5

特定のオブジェクトクラスに関連付けられたすべてのメソッドのリストを確認したいと思います。例えば。いくつかのモデル適合ルーチンがクラス "foo"のオブジェクトを返すことがわかったら、パッケージ(または他のパッケージ)がsimulate.fooupdate.foocoef.fooprint.fooなどのメソッドを定義しているかどうかを知りたいと思います。この?特定のクラスに関連付けられたメソッドを表示する

methodsは逆問題(S3クラスを前提としています)を解決していますが、明らかに興味のあるクラスがあるかどうかを調べるためにprint関数を定義したすべてのオブジェクトを検索したくありません。私はおそらくここで非常に単純なものを忘れてしまったでしょう。ありがとう!

(理想的には、S3クラスとS4クラスのソリューションを見るのがよいでしょう)

更新:理想的なソリューションはmethods機能と同じように、同様に隠されている方法を明らかにする必要があります。例えば、methods("simulate")ショー:

> methods("simulate") 
[1] simulate.lm* 

はそうlmクラスに関連付けられているメソッドのクエリでは、我々は、このシミュレート方法を回復したいと思います。ここ

答えて

6

アム私は間抜けである、またはあなたが(S3法のために)何をしたいmethods(class="foo")ですが? S4クラスの

methods(class="lm") 
## [1] add1.lm*   alias.lm*   anova.lm   case.names.lm*  
## [5] confint.lm*  cooks.distance.lm* deviance.lm*  dfbeta.lm*   
## [9] dfbetas.lm*  drop1.lm*   dummy.coef.lm*  effects.lm*  
## [13] extractAIC.lm*  family.lm*   formula.lm*  hatvalues.lm  
## [17] influence.lm*  kappa.lm   labels.lm*   logLik.lm*   
## [21] model.frame.lm  model.matrix.lm nobs.lm*   plot.lm   
## [25] predict.lm   print.lm   proj.lm*   qr.lm*    
## [29] residuals.lm  rstandard.lm  rstudent.lm  simulate.lm*  
## [33] summary.lm   variable.names.lm* vcov.lm*   
## 
## Non-visible functions are asterisked 

showMethods作品(@ JoshO'Brienから取られたが、参考のために、答えを今削除します):S3ケースについては

library(sp) 
showMethods(classes="SpatialPolygons") 

## Function: [ (package base) 
## x="SpatialPolygons" 
## 
## Function: addAttrToGeom (package sp) 
## x="SpatialPolygons", y="data.frame" 
## 
## Function: coerce (package methods) 
## from="GridTopology", to="SpatialPolygons" 
## from="SpatialGrid", to="SpatialPolygons" 
## from="SpatialPixels", to="SpatialPolygons" 
## from="SpatialPolygons", to="SpatialLines" 
## from="SpatialPolygons", to="SpatialPolygonsDataFrame" 
## 
## Function: coordinates (package sp) 
## obj="SpatialPolygons" 
## 
## Function: coordnames (package sp) 
## x="SpatialPolygons" 
## 
## Function: coordnames<- (package sp) 
## x="SpatialPolygons", value="character" 
## 
## Function: over (package sp) 
## x="SpatialGrid", y="SpatialPolygons" 
## x="SpatialPoints", y="SpatialPolygons" 
## x="SpatialPolygons", y="SpatialGrid" 
## x="SpatialPolygons", y="SpatialGridDataFrame" 
## x="SpatialPolygons", y="SpatialPoints" 
## x="SpatialPolygons", y="SpatialPointsDataFrame" 
## 
## Function: overlay (package sp) 
## x="SpatialGridDataFrame", y="SpatialPolygons" 
## x="SpatialGrid", y="SpatialPolygons" 
## x="SpatialPointsDataFrame", y="SpatialPolygons" 
## x="SpatialPoints", y="SpatialPolygons" 
## x="SpatialPolygons", y="SpatialGrid" 
## x="SpatialPolygons", y="SpatialPoints" 
## 
## Function: plot (package graphics) 
## x="SpatialPolygons", y="missing" 
## 
## Function: polygons (package sp) 
## obj="SpatialPolygons" 
## 
## Function: polygons<- (package sp) 
## object="data.frame", value="SpatialPolygons" 
## 
## Function: recenter (package sp) 
## obj="SpatialPolygons" 
## 
## Function: spChFIDs (package sp) 
## obj="SpatialPolygons", x="character" 
## 
## Function: spsample (package sp) 
## x="SpatialPolygons" 
+0

あなたは13秒で私を打ち負かしました:-) –

+0

誰かが骨折していましたが、あなたではありませんでした;-) –

+0

本当に!私はそのための組み込み関数がなければならないことを知っていました。 – cboettig

4

むしろ.fooため無意味検索よりapropos内の正規表現パターンとして.lmを用いた例である:「LM」

> apropos("\\.lm") 
[1] "anova.lm"  "anova.lmlist" "hatvalues.lm" "kappa.lm"  "model.frame.lm" "model.matrix.lm" 
[7] "panel.lmline" "plot.lm"   "predict.lm"  "prepanel.lmline" "print.lm"  "residuals.lm" 
[13] "rstandard.lm" "rstudent.lm"  "summary.lm"  

で始まる方法もありますあなたもそれらを望むかもしれません:

> apropos("lm\\.") 
[1] ".__C__anova.glm.null" ".__C__glm.null"  "glm.control"   "glm.convert"   
[5] "glm.fit"    "glm.nb"    "lm.fit"    "lm.fit.qr.bare"  
[9] "lm.gls"    "lm.influence"   "lm.pfit"    "lm.ridge"    
[13] "lm.wfit"  

そして、あなたが "glm。"方法は多少制限された正規表現を使用します。

> apropos("^lm\\.") 
[1] "lm.fit"   "lm.fit.qr.bare" "lm.gls"   "lm.influence" "lm.pfit"  "lm.ridge"  
[7] "lm.wfit" 
+0

残念ながら、クラスがNAMESPACEにエクスポートされていない場合は失敗します。アスタリスク*で表示されるすべてのメソッドは、 "methods()"でリストアップされています。 – cboettig

2

methodsはこのために引数classがあります

> methods(class="lm") 
[1] add1.lm*   alias.lm*   anova.lm   case.names.lm*  
[5] confint.lm*  cooks.distance.lm* deviance.lm*  dfbeta.lm*   
[9] dfbetas.lm*  drop1.lm*   dummy.coef.lm*  effects.lm*  
[13] extractAIC.lm*  family.lm*   formula.lm*  hatvalues.lm  
[17] influence.lm*  kappa.lm   labels.lm*   logLik.lm*   
[21] model.frame.lm  model.matrix.lm nobs.lm*   plot.lm   
[25] predict.lm   print.lm   proj.lm*   qr.lm*    
[29] residuals.lm  rstandard.lm  rstudent.lm  simulate.lm*  
[33] summary.lm   variable.names.lm* vcov.lm* 
+0

が13秒遅れます。 –

+0

はい、ありがとうございます。私が何百回も使ったに違いない、これを忘れていたのかどうかは分かりません... –

関連する問題