我正在尝试使用R中的spplot函数创建一个地图。
我已经加载了执行此功能所需的不同库:
> library(mosaic)
> library(latticeExtra)
我读过两个数据框。第一个是CENSUS,是一个包含8个不同特征的表,用于城市中的33个病区。其中一个是Townsend剥夺指数。第二个是DISTRICT,它是一个包含这些病房多边形数据的SpatialPolygonsDataFrame。
> DISTRICTS=readShapePoly("DISTRICTS.shp")
> CENSUS=read.csv("CENSUS.csv")
我想为不同的病房映射Townsend指数。
为此,我已将两个数据框合并为一个新数据Census_shape
,然后将spplot
函数应用于此新数据框。
> Census_shape=merge(DISTRICTS@data,CENSUS, by.x="name", by.y="WARD", sort=FALSE)
> spplot(Census_shape, "TOWNSEND")
但是,当我这样做时,我会收到此警告。
(函数(classes,fdef,mtable)中的错误: 无法为签名'“data.frame”'
找到函数'spplot'的继承方法
错误来自哪里?这是我的代码中的东西。是否更有可能是我的数据框的属性不适用于spplot?
坦克,任何建议都会有很大帮助。
答案 0 :(得分:0)
这几乎可以肯定是因为merge
吐出一个数据帧,这并不奇怪,因为你正在为它提供两个数据帧(DISTRICT@data
只是较大的DISTRICT
内的数据帧空间对象)。
如果您合并数据以将其保存为SpatialPolygonsDataFrame
(或其他),则spplot
将照常工作。请注意,sp
包中包含merge
空间数据方法,请参阅?sp::merge
。
另请注意:可能想要切换到更现代的sf
软件包 - 根据我的经验,它更容易使用。