【问题标题】:R: unable to find an inherited method for function ‘spplot’ for signature ‘"data.frame"’R:无法找到签名“data.frame”的函数“spplot”的继承方法
【发布时间】:2018-05-02 21:40:14
【问题描述】:

我正在尝试使用 R 中的 spplot 函数创建地图。

我已经加载了执行此功能所需的不同库:

> library(mosaic)
> library(latticeExtra)

我已读入两个数据帧。第一个是 CENSUS,是一个包含 8 个不同特征的表格,适用于一个城市的 33 个选区。其中之一是汤森剥夺指数。第二个是 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")

但是,当我这样做时,我会收到此警告。

(函数(类,fdef,mtable)中的错误: 无法为签名“data.frame”找到函数“spplot”的继承方法

错误来自哪里?这是我的代码中的东西吗?是否更有可能是我的数据框的属性不适用于 spplot?

任何建议都会有很大帮助,坦克。

【问题讨论】:

    标签: r


    【解决方案1】:

    这几乎可以肯定是因为merge 吐出了一个数据框,这并不奇怪,因为您为其提供了两个数据框(DISTRICT@data 只是较大的DISTRICT 空间对象中的一个数据框)。

    如果您合并数据以将其保存为SpatialPolygonsDataFrame(或其他),那么spplot 将照常工作。请注意,sp 包包含用于空间数据的merge 方法,请参阅?sp::merge。

    另请注意:您可能想要切换到更现代的 sf 包 - 根据我的经验,它更易于使用。

    【讨论】:

    • 非常感谢。我按照说明进行操作,并没有真正理解“@data”代表什么。
    猜你喜欢
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多