Если растры имеют одинаковое происхождение и экстент, вы можете просто сделать
library(raster)
s <- stack(ras)
cellStats(s)
В противном случае вы можете делать cellStats в цикле
d <- rep(NA, length(ras))
nms <- rep(NA, length(ras))
for(i in 1:length(ras)){
d[i] <- cellStats(ras[[i]], "mean")
nms[i] <- names(ras[[i]])
}
Я не уверен, что выимеется в виду с "именем" растра.В своем коде вы присваиваете весь объект "B".Но в любом случае вам не нужно делать это в цикле, так как у вас уже есть список растров (я предполагаю, что это ras
.) Так что вы также можете сделать
nms <- sapply(ras, names)
илиВы имеете в виду имя файла?
nms <- sapply(ras, filename)
Теперь вы можете сделать
df <- data.frame(name=nms, mean=d)
Проблема вашего второго цикла в том, что i
не является числовым индексом, это растровый объект.Так что вы не можете сделать diff[i]