You need to enable JavaScript to run this app. R语言实现多条件计数判断输出及case_when报错解决
优惠活动
大模型
产品
解决方案
定价
更多

R语言实现多条件计数判断输出及case_when报错解决

报错核心原因

你遇到的报错是case_when()调用时括号位置错位导致的:

  • 原代码里给布尔计数的判定条件多打了一个右括号,直接把case_when()的第一个参数提前闭合了
  • 后续的~ "SCM"因为不在case_when()的函数参数内,被R识别成了独立的公式(formula)对象,不符合mutate()要求的“返回向量”的规则
  • 额外说明:你用布尔值相加统计满足条件个数的逻辑是完全正确的——R中运算时TRUE会自动转为1,FALSE转为0,求和结果就是符合真条件的总数,用来判定“至少3个为真”的逻辑本身没问题。
修正后可运行代码

首先加载dplyr包,再用调整括号后的代码运算:

library(dplyr)

# 先加载你提供的测试数据集
datosB_mice <- structure(list(PAS = c(130, 100, 151, 134, 125, 146, 145, 127, 
109, 115), PAD = c(94, 61, 79, 74, 78, 88, 78, 92, 71, 68), Per.Cintura = c(95.9, 
101, 83.1, 103.2, 96.9, 94.4, 110.9, 92.8, 76.6, 77.3), HDL = c(38, 
48, 40, 70, 45, 39, 44, 51, 57, 51), TG = c(152, 92, 181, 99, 
103, 198, 166, 76, 111, 106), Glucosa_mg = c(74, 85, 91, 92, 
88, 86, 117, 85, 79, 85)), row.names = c(NA, -10L), class = "data.frame")

# 修正后的运算代码
datosB_graficas <- datosB_mice %>% 
  mutate(
    SCM = case_when(
      # 移除了多余的右括号,保证所有条件完整作为case_when的第一个判定参数
      ((TG > 150) + (Glucosa_mg > 110) + 
       (Per.Cintura > 88) + (PAS > 130) + 
       (PAD > 88) + (HDL < 40)) >= 3 ~ "SCM",
      TRUE ~ "Sano"
    )
  )
注意事项
  • 你代码中实际列了6个判定条件,如果业务需求确实是只需要统计5个条件,直接删掉不需要的那项判定逻辑即可,计数规则不受影响
  • 原代码中给返回值加的{"SCM}花括号属于冗余写法,直接写字符串即可

内容的提问来源于stack exchange,提问作者Angela Arango Gonzalez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 08:24:03