SpatialPolygonsDataFrame

SpatialPolygonsDataFrame

当我有一个 SpatialPolygonsDataFrame 对象时,我知道我可以通过两种方式获取数据:

spatial_df@data$column
spatial_df$column

但是我不明白为什么第二种方式是可能的。我认为我必须使用 data 访问 @ 插槽?这是 SpatialPolygonsDataFrame 类的独特之处,还是一般的 S4 对象?

一个可能的答案是在 sp documentations 中,它提到了 [ 类的 SpatialPolygonsDataFrame 方法。但是,由于 $ 等价于 [[ ,而不是 [ ,我不确定这就是答案。

最佳答案

简而言之,$ 的这种行为是由 Spatial 包中的 sp 类实现的,并不是一般 S4 对象的特性。

长答案(我是如何发现的):

  • 使用 showMethods("$") 找出通用 $ 的所有方法。



  • 所以我们知道 SpatialPolygonsDataFrame-class 继承了 $Spatial-class 。我们通过以下方式进入根部:
  • getMethod("$", "Spatial") ,其中展示了 $Spatial-class 实现如下:



  • 因此,spatial_df$col_namespatial_df@data[["col_name"]] 的快捷方式

    关于r - 为什么可以使用 `$` 对 SpatialPolygonsDataFrame 进行子集化?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27477163/

    10-12 20:12