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

R语言如何移除向量列表末尾连续双0中的最后一个0

问题说明

待处理的R语言列表数据集结构如下:

dat <- list(
  `A` = c(0, 25, 500, 1000, 0, 0), 
  `B` = c(0, 25, 500, 1000, 1500, 0)
)

处理要求:对列表内的每个向量做校验,如果向量末尾连续存在两个0,就移除最后一位的0,其余情况保留向量原样。
预期处理结果:

out_dat <- list(
  `A` = c(0, 25, 500, 1000, 0), 
  `B` = c(0, 25, 500, 1000, 1500, 0)
)
解决方案

用lapply遍历列表内所有向量,对每个向量单独做末尾值判断即可,代码可直接运行:

out_dat <- lapply(dat, function(vec) {
  n <- length(vec)
  # 长度不足2的向量不可能出现末尾两个0,直接返回原向量
  if (n < 2) return(vec)
  # 校验最后两位是否均为0,是则去掉最后一位
  if (vec[n] == 0 && vec[n-1] == 0) {
    vec[-n]
  } else {
    vec
  }
})

效果验证

运行上述代码后完全匹配预期结果:

  • 向量A末尾两位均为0,移除最后一位0,长度从6变为5
  • 向量B末尾仅1个0,不满足触发条件,完整保留原长度和所有值
  • 向量开头、中间位置的0不会被误删,不会破坏原有数据结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:30:16