我只想根据@data data frame中相应的属性值从SpatialPolygonsDataFrame对象中删除一些多边形,这样我就可以绘制一个简化的/子集的shapefile.到目前为止,我还没有找到这样做的方法.

例如,假设我想删除world shapefile个面积小于30000的多边形.我该怎么做呢?

或者,类似地,我如何删除Antartica?

require(maptools)

getinfo.shape("TM_WORLD_BORDERS_SIMPL-0.3.shp") 
# Shapefile type: Polygon, (5), # of Shapes: 246
world.map <- readShapeSpatial("TM_WORLD_BORDERS_SIMPL-0.3.shp")

class(world.map)
# [1] "SpatialPolygonsDataFrame"
# attr(,"package")
# [1] "sp"

head(world.map@data)
#   FIPS ISO2 ISO3 UN                NAME   AREA  POP2005 REGION SUBREGION     LON     LAT
# 0   AC   AG  ATG 28 Antigua and Barbuda     44    83039     19        29 -61.783  17.078
# 1   AG   DZ  DZA 12             Algeria 238174 32854159      2        15   2.632  28.163
# 2   AJ   AZ  AZE 31          Azerbaijan   8260  8352021    142       145  47.395  40.430
# 3   AL   AL  ALB  8             Albania   2740  3153731    150        39  20.068  41.143
# 4   AM   AM  ARM 51             Armenia   2820  3017661    142       145  44.563  40.534
# 5   AO   AO  AGO 24              Angola 124670 16095214      2        17  17.544 -12.296

如果我这样做,情节不会反映任何变化.

world.map@data = world.map@data[world.map@data$AREA > 30000,]
plot(world.map)

如果我这样做,结果也是一样的:

world.map@data = world.map@data[world.map@data$NAME != "Antarctica",]
plot(world.map)

感谢您的帮助!

推荐答案

看起来您正在覆盖数据,但没有删除多边形.如果你想减少包含数据和多边形的数据集,可以try .

world.map <- world.map[world.map$AREA > 30000,]
plot(world.map)

[[编辑2016年4月19日]]

R相关问答推荐

按列A中的值进行子集化,并获得列C中对应于R中列B的最大值行的值?使用循环自动化此操作

如何在球体上绘制轮廓线?

使用facet_wrap()时如何将面板标题转换为脚注?

次级y轴R gggplot2

在使用ggroove后,将图例合并在gplot中

我想在R中总结一个巨大的数据框架,使我只需要唯一的lat、lon、Date(Year)和Maxium Value""""""""

Rplotly中的Sankey Diagram:意外连接&

如何在一次运行中使用count进行多列计数

如何写商,水平线,在一个单元格的表在R

迭代到DataFrame列并获得成对的值列表(col1->;col2、col2->;col3、col3->;col4等)的正确方法.

打印XTS对象

R中边际效应包中Logistic回归的交互作用风险比

Data.table';S GForce-将多个函数应用于多列(带可选参数)

R:用GGPLATE,如何在两个独立的变量中制作不同形状的散点图?

使用未知字符数(不受限制的最大长度)的Lookback有什么好的替代方案?

根据r中另一个文本列中给定的范围对各列求和

判断函数未加载R中的库

是否从列中删除★符号?

如何使用循环从R中的聚合函数创建列,而不会在名称中给出&q;$&q;?

在鼠标悬停时使用Plotly更改geom_point大小