Для задачи 1 это R, так что вы можете запустить свою собственную load()
функцию, которая делает то, что вы хотите, например:
loadGADM <- function(file, ...) {
load(file, ...)
gadm
}
И используйте его как:
> ls()
character(0)
> loadGADM <- function(file, ...) {
+ load(file, ...)
+ gadm
+ }
> arg <- loadGADM(url('http://gadm.org/data/rda/ARG_adm0.RData'))
> ls()
[1] "arg" "loadGADM"
Это локальное решение, когда вы знаете, что загруженный объект будет называться gadm
- вы могли бы улучшить функцию, чтобы не нуждаться в этом, например ::
loadGADM <- function(file, ...) {
f <- load(file, ...)
get(f)
}
, который работает, потому что load()
возвращает строки символов имен загруженных объектов.
Для задачи 2 вам необходимо rbind()
три sp
объекта вместе, а не объединять их. Однако для этих объектов это не работает, и идентификаторы полигонов не уникальны:
> sa <- rbind(arg, chl, bol)
Error in validObject(res) :
invalid class "SpatialPolygons" object: non-unique Polygons ID slot values
Я работаю над этим и обновлю, если выясню, как это сделать. Решение состоит в том, чтобы изменить значения слота ID полигона с помощью spChFIDs()
. Здесь мы добавляем "arg_"
и т. Д. К именам строк объектов, так что они не все уникальны:
arg <- spChFIDs(arg, paste("arg", row.names(arg), sep = "_"))
chl <- spChFIDs(chl, paste("chl", row.names(chl), sep = "_"))
bol <- spChFIDs(bol, paste("bol", row.names(bol), sep = "_"))
sa <- rbind(arg, chl, bol)
Тогда мы можем построить объединенный sp
объект:
plot(sa) ## beware might take a long time to plot...