Estoy tratando de mosaico de varios rásteres en un solo ráster grande en R. Uso de script que se publicó en /programming/15287807/how-can-i-create-raster-mosaic-using-list-of-rasters Pero recibí un mensaje de advertencia y un mensaje de error.
rasters1 <- list.files("F:\\MOD15A2_LAI_1km\\MOD15A2_LAI_2009",
pattern = "mod15a2.a2009001.*.005.*.img$",
full.names = TRUE, recursive = TRUE)
mos1 <-mosaic(rasters1, fun=mean)
Estaba informando un error como a continuación
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘extent’ for signature ‘"character"’
Luego probé otra versión.
rasters1.mosaicargs <- rasters1
rasters1.mosaicargs$fun <- mean
Pero aquí hay un mensaje de advertencia como a continuación
Warning message:
In rasters1.mosaicargs$fun <- mean : Coercing LHS to a list
He ignorado el mensaje y luego continué
mos2 <- do.call(mosaic, rasters1.mosaicargs)
pero aquí el mismo error mencionado anteriormente
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘mosaic’ for signature ‘"character", "character"’
Respuestas:
El problema aquí es que mosaic y do.call esperan un objeto ráster en la lista y no solo nombres de caracteres del ráster que está contenido en el vector "rásters1". En efecto, está pidiendo mosaico un nombre en un vector y no un objeto ráster.
fuente
Solo una pequeña variación en el tema. Puede evitar la creación de una lista en blanco y el bucle for ...
... con un comando lapply .
fuente