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

R语言dplyr处理数据时特定日期编码组合列不存在报错求解

问题原因

核心报错触发逻辑如下:
当筛选日期为2021-07-09、编码为FGE时,对应数据行的DR0系列列倒序累加后没有值等于0的结果,导致mat1返回长度为0的空向量,后续拼接要删除的列名时生成了不存在的__PV字段,最终触发列不存在的报错。

修复方案

仅需在最后一步删除列的逻辑前增加非空判断,同时搭配any_of做列名存在性兜底即可,修改后的对应代码段如下:

# 前面所有代码保持不变,替换最后一段执行逻辑即可
if(length(mat1) > 0){
  dropnames <- paste0(mat1,"_",mat1, "_PV")
  res <- SPV %>%
    filter(date2 == dmda, Code == CodeChosse) %>%
    select(-any_of(dropnames))
}else{
  # 没有需要删除的列时直接返回过滤结果即可
  res <- SPV %>%
    filter(date2 == dmda, Code == CodeChosse)
}

# 输出结果
res
验证说明

修改后针对2021-07-09+FGE的参数组合会直接返回对应的完整行数据,不会再触发报错,原有所有正常运行的测试用例逻辑不受任何影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:06:04