You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中基于RasterLayer值筛选RasterBrick并计算均值?

解决方案

你可以直接用raster包的calc()函数完成这个任务,不需要额外生成中间布尔砖或转数据框,效率更高:

# 逐像元处理时间序列数据
mean_filtered <- calc(m, function(x) {
  # 计算当前像元所有图层的均值
  pixel_mean <- mean(x, na.rm = TRUE)
  # 筛选出大于均值的值,再计算这些值的均值
  mean(x[x > pixel_mean], na.rm = TRUE)
})

如果需要先保留筛选后的完整RasterBrick再计算均值,也可以用掩码方式实现:

# 将小于等于均值的像元设为NA,得到筛选后的RasterBrick
m_filtered <- m
m_filtered[m <= mean_m] <- NA

# 计算筛选后砖的均值
mean_filtered <- mean(m_filtered, na.rm = TRUE)

你之前的方法为什么无效?

m[[c]]的用法是错误的,因为[[是用来索引Raster对象的图层的,而非筛选像元值。c是和m同维度的布尔值RasterBrick,无法作为图层索引使用。

内容的提问来源于stack exchange,提问作者Francesco Giardina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 16:38:09