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

R语言使用mutate搭配case_when生成异常列名的原因是什么

错误原因

你代码的问题出在mutate()函数的参数部分:你给dara = case_when(...)的整段赋值逻辑额外套了一层多余的括号,这会导致dplyr无法正确识别你指定的列名dara,而是把括号内的整个表达式作为列名来源,最终生成带括号的异常列名。

修正代码

删除mutate内部多余的外层括号即可,正确写法如下:

Data   <- Data %>%
      mutate(dara = case_when(
        HIV_result == 1  &  vSupressed == 1 ~ 0,
        HIV_result == 1 & vSupressed == 0 & Condomlessex == "Yes"  ~ 1,
        HIV_result == 1 & vSupressed == 0 & Condomlessex == "No" & (Y_chromosome == 1|STI == 1)  ~ 1,
        HIV_result == 1  &  vSupressed == 0  &  Condomlessex == "No"  &  (Y_chromosome == 0 & STI == 0)  ~ 0,
        TRUE ~ 0
      ))

额外注意事项

  • 你构造测试数据集时命名为dAMETHIST,但后续处理调用的数据集名是Data,运行代码前需要将两者统一,避免出现找不到对象的报错。
  • 你当前构造数据集时用data.frame(cbind(向量列表))的写法存在隐患:cbind()会自动把所有向量转为统一类型,你代码里包含字符型向量currentPREP、Condomlessex,直接cbind会把原本是数值型的HIV_result等列也强制转为字符型,影响后续逻辑判断,建议直接去掉cbind,写法调整为:
    dAMETHIST   <- data.frame(HIV_result, vSupressed, Condomlessex, Y_chromosome, STI, currentPREP, PrEPtest)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:54:03