如何在R语言数据框同一列中批量替换多个不同模式的字符串?
问题根因
- 你后两次
mutate操作依旧调用原始未修改的column列做匹配替换,每次都会直接覆盖上一步对domain列的修改结果 - 第三次替换的匹配规则存在笔误,误将G开头的匹配规则写为
^P.*,无法命中目标内容
最优解决方法
直接使用str_replace_all函数传入命名匹配向量,一次性完成多模式替换,不需要多次分步操作:
library(dplyr) library(stringr) spreadsheet.dat3 <- spreadsheet.dat %>% mutate(domain = str_replace_all(column, c( "^P.*" = "Positive", "^N.*" = "Negative", "^G.*" = "General" )))
分步写法修正(仅作错误对照,不推荐使用)
如果你坚持要分步实现,需要将后两次替换的匹配源修改为上一步生成的domain列,同时修正第三次的匹配规则:
spreadsheet.dat1<-spreadsheet.dat %>% mutate(domain=str_replace(column, "^P.*", "Positive")) spreadsheet.dat2<-spreadsheet.dat1 %>% mutate(domain=str_replace(domain, "^N.*", "Negative")) spreadsheet.dat3<-spreadsheet.dat2 %>% mutate(domain=str_replace(domain, "^G.*", "General"))
内容的提问来源于stack exchange,提问作者Greenwood
相关产品推荐
相关产品推荐

