[R-sig-Geo] looping sp data

Barry Rowlingson b.rowlingson at lancaster.ac.uk
Fri Jul 22 17:30:57 CEST 2011

On Fri, Jul 22, 2011 at 3:45 PM, ahelmore <aelmore at usgs.gov> wrote:
> Hi there,
> I have a rather lengthy bit of code I want to run on a series of point
> files, but I can't even figure out how to load shapefiles in a simple loop.
> Since readOGR takes shapefile names without the .shp extension, I thought I
> could make a list of unduplicated file names, sans extensions and use that
> to run the loop, but I'm getting a missing layer error.  After staring at it
> for way too long, I'm looking for a leg up.  Can anyone tell me where my
> thinking/code is off?
> Here's what isn't working:
> patt.xml <- ".*eden.*xml.*"
> patt.shp <- ".*eden.*shp.*"
> data.shp.xml <-list.files(pattern=patt.shp) # list of eden .shp & .shp.xml
> data
> data.xml <-list.files(pattern=patt.xml) # list of eden .shp.xml data
> data.shp <- data.shp.xml[!data.shp.xml %in% data.xml] # list of .shp files
> data.eden <- gsub(".shp","",data.shp) #stripping the extension
> for (x in 1:length(data.eden)) {
>     data<-readOGR(x)
>     summary(data)
> }
> It gives me:  Error in readOGR(x) : missing layer

 readOGR takes the directory or folder with the shapefile and the
truncated shapefile name. So to load ca.shp that is in my current
directory I do:

 > ca=readOGR(".","ca")
 OGR data source with driver: ESRI Shapefile
 Source: ".", layer: "ca"
 with 58 features and 15 fields
 Feature type: wkbPoint with 2 dimensions

Technically the source is the directory, and ca.shp is the layer, in
OGR terminology.

 You might find readShapeSpatial() in maptools useful, it loads
shapefiles given the path to a .shp file:

 > ca2 = readShapeSpatial("ca.shp")

however ca and ca2 aren't identical - I think its just minor
differences in the attributes...


More information about the R-sig-Geo mailing list