Subsetting Shapefiles With R

I have been trying to improve my GIS skills lately and have been trying to use R for as much of this process as I can. One of the tasks I frequently perform is taking a shapefile, subsetting it, and then converting to a GeoJSON. The npm module ogr2ogr is excellent for converting from a shapefile to GeoJSON, however I frequntly find myself needing to select only certain areas of a shapefile. I have been using two libraries in R to achieve this, specifically rgdal and sp.

For example, lets use the Congressional District 2012 shapefiles from the Washington State Office of Financial Management. Downloading the file, unzipping, and then loading into R with

We want to select only the districts that cover Seattle, 7 and 9 which is as simple as subsetting

seattle.only <- subset(, CD113FP %in% c('07', '09'))

One of the nice features about GitHub gists is that you can overlay a GeoJSON file on a Google map for a quick QC check. While R accepts a variety of projection formats, Github does not and I occasionally I find I have to convert to the WGS84 datum which are easily done with

seattle.only.wgs <- spTransform(seattle.only, CRS("+proj=longlat +ellps=WGS84"))

And written out as a GeoJSON file with

writeOGR(seattle.only.wgs, dsn="seattle.only.wgs.geojson", layer="cd2012", driver="GeoJSON", check_exists = FALSE)

Occasionally I get an error about the file I am about to create not being found. This Stack Overflow answer was very helpful and now I add the check_exists = FALSE parameter every time I write out with writeOGR().