2013-04-16 37 views
5

Tôi muốn xem danh sách tất cả các phương thức được liên kết với một lớp đối tượng nhất định. Ví dụ. nếu tôi thấy rằng một số mô hình phù hợp thường xuyên trả về một đối tượng của lớp "foo", tôi muốn biết nếu gói (hoặc bất kỳ gói khác) đã xác định các phương pháp như simulate.foo, update.foo, coef.foo, print.foo vv. điều này?Hiển thị các phương thức được liên kết với một lớp cụ thể

Tôi biết rằng methods giải quyết vấn đề nghịch đảo (giả sử lớp S3), nhưng rõ ràng là tôi không muốn tìm kiếm qua mọi đối tượng đã xác định hàm print để tìm hiểu xem lớp học của tôi có sở thích không. Có lẽ tôi đã quên thứ gì đó rất đơn giản ở đây. cảm ơn!

(Tốt nhất là nên xem giải pháp cho các lớp S3 và S4).

Cập nhật: Lý tưởng nhất giải pháp nên tiết lộ các phương thức bị ẩn cũng như chức năng methods. Ví dụ, methods("simulate") cho thấy:

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

như vậy trong một truy vấn cho các phương pháp kết hợp với lớp lm, chúng tôi muốn phục hồi phương pháp mô phỏng này.

Trả lời

6

Tôi có phải là đầu xương hoặc là methods(class="foo") bạn muốn (đối với phương pháp S3) ???

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 công trình cho các lớp S4 (lấy từ @ JoshO'Brien bây giờ-xóa câu trả lời, để tham khảo):

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

Bạn đánh tôi sau 13 giây :-) –

+0

Umm - ai đó đang bị đầu óc, nhưng không phải bạn ;-) –

+0

Thật vậy! Tôi biết phải có một chức năng tích hợp cho điều đó. – cboettig

4

Dưới đây là một ví dụ sử dụng .lm như một mô hình regex trong apropos thay vì tìm kiếm không kết quả cho .foo: "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"  

Ngoài ra còn có phương pháp bắt đầu với vì vậy bạn cũng có thể muốn những người đó:

> 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"  

Và nếu bạn muốn bỏ qua "glm". phương pháp sử dụng regex hơi bị hạn chế hơn:

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

Rất tiếc, điều này xuất hiện trong trường hợp lớp không được xuất sang NAMESPACE, ví dụ: tất cả các phương thức xuất hiện với dấu hoa thị * khi được liệt kê theo "phương thức()". – cboettig

2

Đối với trường hợp S3, methods có một cuộc tranh cãi class cho việc này:

> 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

đánh bại bạn sau 13 giây. –

+0

Vâng, cảm ơn. Không hoàn toàn chắc chắn làm thế nào tôi quên điều này, như tôi đã phải sử dụng nó một trăm lần ... –