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

R语言if else语句报错修复与危害等级数据合并到dataframe求助

R语言危害等级判定代码修复方案

报错根因

代码报错由3个语法/拼写问题导致:

  • 长度函数拼写错误:length()被误写为lenght()
  • 多分支判断语法错误:R中分支关键字为分开的else if,不支持连写的elseif
  • 变量名大小写不一致:初始化的空向量为Hazard_level,后续赋值时误写为Hazard_Level,属于两个完全独立的变量,最终生成的向量长度和原数据集23行不匹配,导致合并时报行数不一致错误

修复后的循环实现

# 初始化空向量
Hazard_level <- c()
# 修正拼写、语法和变量名问题
for(i in 1:length(data$Risk_value)){
  if(data$Risk_value[i] < 10){
    Hazard_level <- append(Hazard_level, 'I')
  }
  else if(data$Risk_value[i] < 100){
    Hazard_level <- append(Hazard_level, 'II')
  }
  else if(data$Risk_value[i] < 1000){
    Hazard_level <- append(Hazard_level, 'III')
  }
  else{
    Hazard_level <- append(Hazard_level, 'IV')
  }
}
# 直接把结果赋值到原数据集新列,无需单独生成数据框再合并
data$Hazard_level <- Hazard_level

更高效的向量化实现(无需循环,推荐)

R中处理分箱问题直接用cut()函数即可,代码更简洁运行效率更高:

data$Hazard_level <- cut(
  data$Risk_value,
  breaks = c(-Inf, 10, 100, 1000, Inf),
  labels = c("I", "II", "III", "IV"),
  right = TRUE # 表示区间右闭,符合<10、<100的判定规则
)

运行后新列Hazard_level会直接添加到原数据集data中,无需额外合并操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:27:02