Можно также вытащить кошку из сумки и сказать, что я пытался около дня выяснить, что происходит, когда я вызываю plot
для объекта класса SpatialPolygons*
. Мой инстинкт - искать plot.SpatialPolygonsDataFrame
, подход, который работает для любого количества других примеров, которые я видел и встречал, но это не удалось.
Быстрый пример:
US..shp файл здесь.
library(maptools)
us.states<-readShapePoly("cb_2014_us_state_5m.shp")
plot(us.states)
Немного туповатое, но что угодно - дело в том, что простой вызов plot
и где-то в глубине R
знал, какой метод вызывать, чтобы дать нам представление всех фигур.
После небольшого поиска я попытался использовать два других подхода, предложенных различными SO Q & As, в первую очередь:
> 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`
), в котором говорится:
Метод
plot
для пространственных полигонов принимает следующие аргументы:
но он все равно не говорит, что именно этот метод.