RStudio中使用recode函数重编码值返回报错如何解决
报错触发原因
R 对函数命名参数有硬性语法规则:合法参数名不能以数字开头。你写的重编码规则1000 = '2000'中,解释器会直接把开头的1000识别为独立的数值常量,读到后续的=时无法匹配合法语法结构,就会抛出「unexpected '='」的错误。
额外注意:dplyr::recode()的替换规则方向是旧值写在等号左侧,新值写在等号右侧,不要写反顺序。
可正常运行的调整方案
- 方案1:遵循
recode的语法要求,给数值型旧值加上反引号,强制R将其识别为待匹配的替换键:
# 如果需要重编码后userid为字符类型 baseline <- baseline %>% mutate(userid = recode(userid, `1000` = '2000')) # 如果需要重编码后userid保持数值类型,去掉新值的引号即可 baseline <- baseline %>% mutate(userid = recode(userid, `1000` = 2000))
- 方案2:如果不想记反引号的特殊规则,可以用逻辑更直白的
case_when()实现相同重编码效果,语法容错率更高:
baseline <- baseline %>% mutate(userid = case_when( userid == 1000 ~ 2000, # 需要字符类型就写~ '2000' TRUE ~ userid # 其余不匹配的值保持原样 ))
内容的提问来源于stack exchange,提问作者db2020
相关产品推荐
相关产品推荐

