如何用R语言替换向量包含的字符为指定字符及取反操作
R语言实现指定字符替换及取反替换
先明确你的输入数据:
x <- "KDDADQHRQDKWKDEHENRFKDEFVDEKKK" repo <- c("R", "H", "K", "D", "E")
1. 将属于repo的字符替换为?
把repo中的字符组合成正则表达式的字符类,用字符串替换工具就能完成全局替换:
方法一:使用stringr包(推荐,语法更直观)
library(stringr) # 构造正则规则:匹配repo里的任意字符 pattern1 <- paste0("[", paste(repo, collapse = ""), "]") result1 <- str_replace_all(x, pattern1, "?") # 查看结果 cat(result1, "\n") # 输出:???A?QHRQ??W?????N?F???FV?????
方法二:基础R原生函数gsub
result1_base <- gsub(paste0("[", paste(repo, collapse = ""), "]"), "?", x)
2. 将不属于repo的字符替换为?
只需要把正则字符类改成取反形式(在开头加^),逻辑和上面一致:
方法一:使用stringr包
pattern2 <- paste0("[^", paste(repo, collapse = ""), "]") result2 <- str_replace_all(x, pattern2, "?") # 查看结果 cat(result2, "\n") # 输出:KDD?D?HR?DK?KDEHE?R?KDE??DEKKK
方法二:基础R原生函数gsub
result2_base <- gsub(paste0("[^", paste(repo, collapse = ""), "]"), "?", x)
简单说明:正则语法里,[abc]表示匹配a、b、c中的任意一个字符,[^abc]则表示匹配除a、b、c之外的所有字符,刚好对应你需要的两种替换场景。
内容的提问来源于stack exchange,提问作者littleworth
相关产品推荐
相关产品推荐

