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

如何修复R语言countConsecutivePairs函数编写出现的各类报错?

R函数countConsecutivePairs修复方案

原有代码的错误汇总

  • 语法错误:stop("Error"、print(c(z[i],z[i+1]) 两处缺少右闭合括号,加载代码时就会触发语法报错
  • 命名不符合要求:需求规定函数名为countConsecutivePairs,原有代码拼写为countConsecutivepairs,大小写不匹配
  • 入参校验逻辑不严谨:使用class(z)!="numeric"判断数值类型会漏掉整数型向量等合法数值类输入,同时错误提示信息不明确,用户无法知道报错原因
  • 循环逻辑错误:for(i in z)是遍历向量的元素值而非下标,读取z[i]时会出现下标越界、取值完全不符合预期的问题
  • 功能逻辑偏离需求:需求是统计差值小于2的连续元素对总数,原有代码判断条件为差值不等于2,且无计数逻辑,仅打印符合条件的元素对

正确实现代码

countConsecutivePairs <- function(z) {
  # 入参合法性校验
  if (!is.vector(z)) {
    stop("入参必须为向量类型")
  }
  if (!is.numeric(z)) {
    stop("入参必须为数值型向量")
  }
  # 长度不足2的向量没有连续元素对,直接返回0
  vec_len <- length(z)
  if (vec_len < 2) {
    return(0)
  }
  # 向量化计算相邻元素差值绝对值,统计符合条件的数量
  abs_diff <- abs(diff(z))
  return(sum(abs_diff < 2))
}

测试用例

# 测试1:正常数值向量,连续对差值为1、3、0、2,符合<2的共3个
countConsecutivePairs(c(3,4,7,7,9))
# 输出结果:3

# 测试2:非向量入参,触发报错
countConsecutivePairs(matrix(1:4, nrow=2))
# 报错:入参必须为向量类型

# 测试3:非数值向量入参,触发报错
countConsecutivePairs(c("a","b","c"))
# 报错:入参必须为数值型向量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:06:02