使用R中的形状文件显示区域子集

使用R中的形状文件显示区域子集,r,gis,shapefile,R,Gis,Shapefile,我有一个英国的形状文件: 我已经将shapefile读入一个变量,UK >UK <- readOGR(dsn = "....." >England <- UK >UK-England使用此命令: England <- UK@data$LAD14CD[c(grep("^E", UK$LAD14CD))] 注意,这里需要后面的逗号!另外,您不需要将grep语句包装在c()中,但这并不影响它,因为它只是不必要的。我最终使用了dplyr和grepl,以使事情更简单: l

我有一个英国的形状文件:

我已经将shapefile读入一个变量,UK

>UK <- readOGR(dsn = "....."
>England <- UK
>UK-England使用此命令:

England <- UK@data$LAD14CD[c(grep("^E", UK$LAD14CD))]

注意,这里需要后面的逗号!另外,您不需要将grep语句包装在
c()
中,但这并不影响它,因为它只是不必要的。

我最终使用了
dplyr
grepl
,以使事情更简单:

library('rgdal')
library('dplyr')

UK <- readOGR(dsn="LAD_DEC_2014_GB_BGC.shp", layer="LAD_DEC_2014_GB_BGC") %>%
  subset(grepl("^E", LAD14CD))
plot(UK)
library('rgdal'))
库('dplyr')
英国%
子集(grepl(“^E”,LAD14CD))
地块(英国)

问题是plot(UK)工作正常,但我似乎无法向下过滤区域可能
UK@data$LAD14CD[substr(UK$LAD14CD,1)=“E”]
?谢谢,这会得到我需要的ID,但我需要将UK@Data使用这些ID。我可以这样做:England@data[英格兰$LAD14CD%,单位为%UK@data$LAD14CD[substr(UK$LAD14CD,1,1)=“E”],]但如何覆盖England@data使用这个新的子集?它会出错:错误在
[.data.frame
(x@data,i,j,…,drop=FALSE):未定义的列已选择以下列将获得正确的行:UK@data[UK$LAD14CD%在%UK$LAD14CD[c](grep(“^E”,UK$LAD14CD)),]但一定有更整洁的方法吗?您的代码仍然会给出与以前相同的错误:(你的链接不会立即导致下载,因此很难测试。如果你发布
UK@data
帮助您会更容易。对此表示抱歉!我已经更新了链接。head命令与上面发布的数据几乎相同
England <- UK[grep("^E", UK@data$LAD14CD),]
library('rgdal')
library('dplyr')

UK <- readOGR(dsn="LAD_DEC_2014_GB_BGC.shp", layer="LAD_DEC_2014_GB_BGC") %>%
  subset(grepl("^E", LAD14CD))
plot(UK)