R语言中mutate+across结合recode报错,case_when可行的原因
报错原因解析:mutate/across/recode中的意外'='错误
你遇到的unexpected '='错误,核心原因是recode函数中数字类型的旧值不能直接作为键使用。
在recode的语法逻辑里,你写的1 = "No"会被R误解:它会把1当成参数名称,但R不允许纯数字作为参数名,因此触发语法错误。而case_when是基于逻辑判断的分支语句,==是比较运算符,不存在参数名的识别问题,所以能正常运行。
修正后的代码只需把数字旧值用反引号包裹,让R正确识别为键名即可:
df %>% mutate(across(var1:var3, ~ recode(.x, `1` = "No", `2` = "Yes")))
补充说明:如果旧值是字符类型,直接写"1" = "No"就不会报错,因为字符串可以直接作为recode的键名。
内容的提问来源于stack exchange,提问作者uncertaincyclist
相关产品推荐
相关产品推荐

