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

使用dwp包调用prepRing函数报错:!anyNA(x) is not TRUE

dwp包prepRing函数报错:!anyNA(x) is not TRUE问题排查

问题背景

  • 基于dwp包开展风电场鸟类和蝙蝠致死量估算,核心需求是计算搜索区域外carcasses占比
  • 导入3个Shapefile数据:
    • SP8_BOX:多面要素,属性表含OBJECTID、Turbine、Class字段
    • SP8:含Turbine字段
    • carcasses:含Turbine、Species、Date字段
  • 初始化layout_shape与cod对象过程无异常,但执行以下代码时触发报错:
    prepRing(layout_shape, scVar = "Class", notSearched = "Out")
    
    报错信息:
    Error in FUN(X[[i]], ...) : !anyNA(x) is not TRUE
    
  • 已完成的排查:
    • 用lapply遍历layout_shape各组件,未发现显性NA值
    • layout_shape$turbines的agr属性显示NA,但几何坐标无缺失

针对性排查与解决建议

  • 校验Class字段的隐性NA:
    虽然整体组件无NA,但scVar指定的Class字段可能存在空字符串、特殊字符等被函数识别为NA的情况,执行以下代码确认:
    table(layout_shape$polygons$Class, useNA = "ifany")
    
    若存在NA,需清理对应数据行或填充合法值
  • 修复agr属性的NA:
    sf对象的agr(属性-几何关联)属性为NA可能触发内部校验,可手动设置属性关系(根据实际业务选择constant/aggregate/identity):
    sf::st_agr(layout_shape$turbines) <- "constant"
    
  • 确认数据关联完整性:
    检查layout_shape中polygons与turbines的Turbine字段是否完全匹配,无缺失或不匹配的风机ID
  • 简化测试定位问题:
    抽取单个风机对应的多边形与carcass数据,构造最小测试集调用prepRing,排查是否为特定数据行导致的异常

内容的提问来源于stack exchange,提问作者Takis Pitsakis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 18:22:38