Tal vez debido a que soy relativamente nuevo en R, tengo problemas para usar los archivos de gadm-Map en http://www.gadm.org/.gráficos de comparación entre países GADM-Maps
Intento dibujar un mapa con varios países y compararlos entre sí (utilizando diferentes colores).
Esto es lo que hago
library('sp')
##
load(url('http://biogeo.ucdavis.edu/data/gadm2/R/ARG_adm0.RData'))
# loads an Object "gadm" with shape of Argentinia
arg <- gadm # is there a more convenient way to do this in one line?
load(url('http://biogeo.ucdavis.edu/data/gadm2/R/CHL_adm0.RData'))
# loads an Object "gadm" with shape of Chile
chl <-gadm
load(url('http://biogeo.ucdavis.edu/data/gadm2/R/BOL_adm0.RData'))
# loads an Object "gadm" with shape of Bolivia
bol <- gadm
##
spplot(c(arg, chl, bol))
# output: unable to find an inherited method for function "spplot", for signature "list"
Aquí están mis problemas:
- (Esta pregunta es probablemente causado por mi newbieness) ¿Hay una manera más conveniente para cargar los archivos de forma? Me parece bastante estúpido cambiar el nombre del gadm-Object todo el tiempo. Tal vez incluso hay una forma en que R solo descarga los datos una vez y luego los almacena en el espacio de trabajo/en algún lugar localmente.
- ¿Cómo puedo convencer a R para trazar todos esos países en UN mapa?
Gracias de antemano!
[editar]
algunas funciones interesantes Con la ayuda de Gavin Simpson, que fue capaz de crear algunas funciones interesantes que reducen el conjunto de mapas fusión a una línea:
## you will need the sp-package
library('sp')
## load a file from GADM (you just have to specify the countries "special part" of the file name, like "ARG" for Argentina. Optionally you can specify which level you want to have
loadGADM <- function (fileName, level = 0, ...) {
load(url(paste("http://biogeo.ucdavis.edu/data/gadm2/R/", fileName, "_adm", level, ".RData", sep = "")))
gadm
}
## the maps objects get a prefix (like "ARG_" for Argentina)
changeGADMPrefix <- function (GADM, prefix) {
GADM <- spChFIDs(GADM, paste(prefix, row.names(GADM), sep = "_"))
GADM
}
## load file and change prefix
loadChangePrefix <- function (fileName, level = 0, ...) {
theFile <- loadGADM(fileName, level)
theFile <- changeGADMPrefix(theFile, fileName)
theFile
}
## this function creates a SpatialPolygonsDataFrame that contains all maps you specify in "fileNames".
## E.g.:
## spdf <- getCountries(c("ARG","BOL","CHL"))
## plot(spdf) # should draw a map with Brasil, Argentina and Chile on it.
getCountries <- function (fileNames, level = 0, ...) {
polygon <- sapply(fileNames, loadChangePrefix, level)
polyMap <- do.call("rbind", polygon)
polyMap
}
Cuando encuentre esta página, asegúrese de leer esta respuesta: https://stackoverflow.com/a/33264548/263589
tal vez sería mejor usar MapTools en lugar de SP? puedes ayudarme a hacer eso? – speendo
La razón para 1) es que en R un objeto tiene un nombre y este se guarda junto con la definición del objeto cuando 'save()' d. El nombre es una parte integral de la representación guardada del objeto y no creo que pueda hacer nada al respecto con 'load()' tal como está. Sin embargo, este comportamiento es fácil de eludir con su propio contenedor para 'cargar()'. –