无法对 shapefile 中的数据进行子集化

Unable to subset data in a shapefile

我想在我的 shapefile 中执行子集设置,而不指定 .dbf 文件中第一列的名称。 更准确地说,我想 select .dbf 第一列中所有值为 1 的行,但我不想指定此列的名称。

例如,此脚本有效,因为我指定了列的名称(如 columnName)

library(rgdal) # readOGR

shapeIn <- readOGR(nomeFile)
shapeOut <- subset(shapeIn, columnName == 1)

相反,它不起作用

shapeOut <- (shapeIn[,1] == 1)

我收到一条错误消息: 比较 (1) 仅适用于原子和列表类型 shapeOut 和 shapeIn 是 ESRI 矢量文件。

这是我的 shapeIn

的 header
   coordinates mask_1000_
1 (54000, 1218000)          0
2 (55000, 1218000)          0
3 (56000, 1218000)          0

你能帮帮我吗?谢谢

这个

shapeOut <- (shapeIn[,1] == 1)

不起作用,因为 SpatialPolygonsDataFrames 包含数据以外的其他信息。所以 "common" data.frame 子集化的工作方式不同。要让它工作,您必须在 @data 插槽上进行子集设置 "logical check" :这应该可以工作(使用子集或 "direct" 索引):

shapeOut <- subset(shapeIn, shapeIn@data[,1] == 1)

shapeOut <- shapeIn[shapeIn@data[,1] == 1,]

(但是,根据最近的经验,按列号引用数据很少是个好主意...;-))

再见贾科莫!!!