Я пытаюсь объединить несколько растров в один большой растр в R. Используя скрипт, который размещен на /programming/15287807/how-can-i-create-raster-mosaic-using-list-of-rasters Но я получил предупреждение и сообщение об ошибке.
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)
Это было сообщение об ошибке, как показано ниже
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘extent’ for signature ‘"character"’
Тогда я попробовал другую версию.
rasters1.mosaicargs <- rasters1
rasters1.mosaicargs$fun <- mean
Но здесь какое-то предупреждение, как показано ниже
Warning message:
In rasters1.mosaicargs$fun <- mean : Coercing LHS to a list
Я проигнорировал сообщение, затем продолжил
mos2 <- do.call(mosaic, rasters1.mosaicargs)
но здесь та же ошибка упоминается в качестве выше
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘mosaic’ for signature ‘"character", "character"’
Ответы:
Проблема в том, что мозаика и do.call ожидают растровый объект в списке, а не только имена символов растра, который содержится в векторе "rasters1". По сути, вы запрашиваете мозаичное имя в векторе, а не растровый объект.
источник
Просто небольшая вариация на тему. Вы можете избежать создания пустого списка и цикла for ...
... с радостной командой.
источник