首页 > 解决方案 > R中多个栅格对象的计数频率

问题描述

我想写一个频率为 150 个光栅对象的 df。

我知道我可以读取单个光栅对象

raster_x <- raster::raster()

我可以进一步得到频率

raster_freq_y <- raster::freq(raster_x)

之后,我可以将多个栅格对象的频率输出绑定到 df

cbind.data.frame(raster_freq_x, raster_freq_y) 

我不知道如何一次性处理 150 个光栅对象?

我应该使用循环吗?如果是这样,什么样的循环才有意义?

任何帮助表示赞赏。

标签: rr-raster

解决方案


如果RasterLayer对象具有相同的范围和分辨率,您可以将它们组合在一个RasterStack. 下面的例子来自?freq

示例数据:

library(raster)
r <- raster(nrow=18, ncol=36)
r[] <- runif(ncell(r))
r[1:5] <- NA
s <- stack(r, r*2, r*3)

解决方案:

freq(s, merge=TRUE)

如果RasterLayer对象没有相同的范围和分辨率,您可以将它们放在一个列表中并使用lapply

ss <- list(r, r*2, r*3)
lapply(ss, freq)

推荐阅读