无法对 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,]
(但是,根据最近的经验,按列号引用数据很少是个好主意...;-))
再见贾科莫!!!
我想在我的 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,]
(但是,根据最近的经验,按列号引用数据很少是个好主意...;-))
再见贾科莫!!!