不妨讓貓從袋子裏走出來,並說我一直在嘗試約一天的時間來找出發生了什麼,當我呼叫plot
爲類SpatialPolygons*
的對象。我的直覺是尋找plot.SpatialPolygonsDataFrame
,這種方法適用於我見過的任何其他示例&遇到,但這失敗了。如何判斷`methods`失敗時函數調用正在使用什麼方法?
簡單的例子:
library(maptools)
us.states<-readShapePoly("cb_2014_us_state_5m.shp")
plot(us.states)
有點矮胖但不管 - 的一點是,要plot
一個簡單的通話和地方內心深處R
知道,爲了給我們的所有形狀的表示要調用哪個方法。
了一下週圍搜索後,我嘗試了兩種其它方法的各種SO Q &作爲,首先建議:
> methods(plot)
[1] plot.aareg* plot.acf*
[3] plot,ANY,ANY-method plot.cox.zph*
[5] plot.data.frame* plot.decomposed.ts*
[7] plot.default plot.dendrogram*
[9] plot.density* plot.ecdf
[11] plot.factor* plot.formula*
[13] plot.function plot.hclust*
[15] plot.histogram* plot.HoltWinters*
[17] plot.isoreg* plot.lm*
[19] plot.medpolish* plot.mlm*
[21] plot.ppr* plot.prcomp*
[23] plot.princomp* plot.profile.nls*
[25] plot.raster* plot.shingle*
[27] plot,SpatialGrid,missing-method plot,SpatialLines,missing-method
[29] plot,Spatial,missing-method plot,SpatialPixels,missing-method
[31] plot,SpatialPoints,missing-method plot,SpatialPolygons,missing-method
[33] plot.spec* plot.spline*
[35] plot.stepfun plot.stl*
[37] plot.survfit* plot.table*
[39] plot.times* plot.trellis*
[41] plot.ts plot.tskernel*
[43] plot.TukeyHSD* plot.xyVector*
[45] plot.zoo*
答案似乎是在插槽27-32;然而,每一個都緊跟着一個令人煩惱的逗號!沒有提到這是可能的,在?methods
和?plot,SpatialPolygons,missing-method
是一個錯誤。 missing-method
的快速搜索沒有任何用處,並且在?methods
中再次沒有提及。
OK;繼續。那麼getS3method
? getMethod
? getMethods
? getAllMethods
??
> getS3method("plot","SpatialPolygonsDataFrame")
Error in getS3method("plot", "SpatialPolygonsDataFrame") :
S3 method 'plot.SpatialPolygonsDataFrame' not found
> getMethod("plot","SpatialPolygonsDataFrame")
Error in getMethod("plot", "SpatialPolygonsDataFrame") :
no method found for function 'plot' and signature SpatialPolygonsDataFrame
後兩種已被棄用&也返回什麼。
顯然這些功能只是我第一本能的替身。
那麼現在呢?如何通過plot
通過SpatialPolygonsDataFrame
來判斷哪個方法被調用?這個問題是否有任何通用的方法取代我上面使用的方法?
編輯:
排序事故,我偶然發現this(= ?`Spatial-Polygons-class`
),它說:
The
plot
method for spatial polygons takes the following arguments:
,但仍不能說的方法是,究竟是什麼。
的 「令人煩惱的逗號」 ** **是在'methods'提到? * Details *部分的第二段說:「S4方法簽名被打印爲'generic,class-method'; S4允許多次調度,所以簽名中可能有幾個類'generic,A,B-method' 「。以及[如何查看函數的源代碼?](http://stackoverflow.com/q/19226816/271616)的答案中描述瞭如何查看S4方法的源代碼。 –
只是爲了澄清,'方法'功能從來沒有「告訴你使用哪種方法」。它只告訴你哪些方法可以從加載的包中獲得。 –