r - if (S == 0) { : 需要 TRUE/FALSE 的缺失值}, raster::calc
问题描述
我有一个 70 层的光栅堆栈(连续 70 年的同一个月)并试图找到趋势(预美白)。
由于 pwmk 仅适用于矢量,因此我在下面 (tsfun) 编写了一个函数来将“pwmk”应用于我的 rasterstack 并提取 sen 的斜率。
tsfun = function(st,na.rm=TRUE){
if(all(is.na(st))){return(NaN)}
return(pwmk(st)[["Sen's Slope"]])
}
然后我使用 raster::calc 如下计算森的斜率
sen.slop <- raster::calc(st,tsfun)
我有多个时间序列(所有 70 年的不同月份),并且已经将这个过程应用于所有时间序列。我只有一个变量 3 个月的问题,为此我收到以下错误。
Error in if (S == 0) { : missing value where TRUE/FALSE needed}
任何帮助或建议肯定会有所帮助和赞赏。
解决方案
这是导致此错误的一种情况。
library(modifiedmk)
pwmk(rep(0, 3))[["Sen's Slope"]]
# Error in if (S == 0) { : missing value where TRUE/FALSE needed
所以你需要在tsfun
. 也许按照这些思路做一些事情:
tsfun = function(st,na.rm=TRUE){
if(all(is.na(st))){return(NaN)}
if(length(unique(st)) == 1){return(0)}
return(pwmk(st)[["Sen's Slope"]])
}
试试看
tsfun(rep(10,3))
#[1] 0
推荐阅读
- android - Flutter google play 说应用程序已在调试模式下登录
- javascript - 使用切换按钮删除容器
- javascript - 如何使用 JSON 将数组从 Twig 传递到 Javascript
- php - 在 MAMP Pro 中安装 zip 扩展
- html - CSS - 当我使用渐变背景时,我发现图像消失了
- xamarin - Xamarin.iOS 是否有实现新添加的 iOS 13 Enterprise Single Sign On 的 api?
- spring-boot - 为什么使用 switchIfEmpty 时项目反应器会无限期挂起?
- user-interface - 如何仅在 Firebase 成功回调时在 Scaffold 上显示确认小吃栏?
- python - 通过 .reshape(generator) 将一维数组广播到不同 nD 数组的特定维度
- firebase-mlkit - Firebase ML Kit 可以用作人脸认证吗