IDs, Slots und Funktionen vom Typ "Anwenden". Die drei am wenigsten bevorzugten Dinge, die für alles, was ich tue, unbedingt erforderlich sind. Ich dachte, ich würde nur antworten, um mehr Inhalte zu diesem Thema zu generieren.
Der folgende Code funktioniert, behält aber die "nutzlosen" ID-Werte bei. Besserer Code würde die Zeit zum Analysieren von Dingen in Anspruch nehmen, sodass jedes Trakt den Status FIPS, County FIPS und Trakt FIPS als ID hat. Nur noch ein paar Zeilen, um das zu erreichen, aber da Sie sich nicht für Ausweise interessieren, lassen wir es für den Moment weg.
#Your Original Code
library(sp)
library(UScensus2000)
library(UScensus2000tract)
data(state) # for state names
states <- gsub( " ", "_", tolower(state.name) )
datanames <- paste(states,"tract", sep=".")
data( list=datanames )
lst <- lapply(datanames,get)
#All good up to here, but we need to create unique ID's before rbind
#Modified from Roger Bivand's response at:
# https://stat.ethz.ch/pipermail/r-sig-geo/2007-October/002701.html
#For posterity: We can access the ID in two ways:
class(alaska.tract)
getSlots(class(alaska.tract))
class(slot(alaska.tract, "polygons")[[1]])
getSlots(class(slot(alaska.tract, "polygons")[[1]]))
#So to get all ID's
sapply(slot(alaska.tract, "polygons"), function(x) slot(x, "ID"))
#or
rownames(as(alaska.tract, "data.frame"))
#These should be the same, but they are quite different...sigh. Doesn't matter for
#what follows though
#To make them uniform we can write a function using the spChFIDs function from sp:
makeUniform<-function(SPDF){
pref<-substitute(SPDF) #just putting the file name in front.
newSPDF<-spChFIDs(SPDF,as.character(paste(pref,rownames(as(SPDF,"data.frame")),sep="_")))
return(newSPDF)
}
#now to do this for all of our state files
newIDs<-lapply(lst,function(x) makeUniform(x))
#back to your code...
nation <- do.call( rbind, newIDs )
rbind
imsp
Paket enthaltene SPDF-Methode einzureichen ? Ich dachte daran, so etwas wie diesen Code in ein,deduplicateIDs=TRUE
Argument für die Methode umzuwandeln ...