R语言中使用str_replace_all批量重命名多类列名时遇语法错误求助
R语言中使用str_replace_all批量重命名多类列名时遇语法错误求助
嗨,我来帮你排查一下问题~你遇到的语法错误其实是因为嵌套str_replace的时候多写了一对不必要的括号,咱们先看错误点,再给你更简洁的写法:
先纠正你的语法错误
你原来的代码里,str_replace((., 'condition1', "related")这里多套了一层括号,导致R解析的时候找不到正确的参数结构。把多余的括号去掉,正确的嵌套写法应该是这样:
data <- dataraw %>% rename_all(~ str_replace_all(str_replace(str_replace(., 'condition1', "related"), 'condition2', "unrelated"), 'condition3', "filler"))
不过这种多层嵌套的写法不仅容易写错,可读性也差,其实str_replace_all本身就支持一次性处理多个替换规则,用命名向量来指定就好,根本不用嵌套多个str_replace!
更优雅的解决方案
直接给str_replace_all传入一个命名向量,向量的名字是你要替换的旧字符串,对应的值是新名字,一次性搞定所有替换:
data <- dataraw %>% rename_all(~ str_replace_all(., c( 'condition1' = "related", 'condition2' = "unrelated", 'condition3' = "filler" )))
另外补充一下,在新版dplyr(1.0.0及以上)里,rename_all已经被rename_with取代了,推荐用更规范的rename_with写法,逻辑是一样的:
data <- dataraw %>% rename_with(~ str_replace_all(., c( 'condition1' = "related", 'condition2' = "unrelated", 'condition3' = "filler" )))
这样写既简洁又不容易出错,你可以试试这个方法~
备注:内容来源于stack exchange,提问作者Jen
相关产品推荐
相关产品推荐

