如何使用R脚本移除数据列中的"(more info)"特定字符串?
解决R语言中移除Region列里"(more info)"的问题
嘿,我来帮你搞定这个正则匹配的小问题~
你之前写的代码没得到正确结果,问题出在正则表达式的写法上:你用了方括号[],这会把括号里的每个字符当成单独的匹配项,不仅会删掉(more info),还会误删国家名称里包含的相同字符,比如Sri Lanka里的i就会被删掉,这肯定不是你想要的。
正确的代码写法
我们需要匹配整个(more info)字符串(包括它前面的空格),而且因为括号在正则里是特殊字符,得用\\转义。试试下面的代码:
# 先转成字符型,再替换目标字符串 abc <- gsub(" \\(more info\\)", "", as.character(States$Regions))
如果担心有些条目里括号前的空格可能有差异(比如有的没空格),可以用更灵活的写法,允许匹配0个或多个空格:
abc <- gsub("\\s*\\(more info\\)", "", as.character(States$Regions))
测试验证
假设你的数据是这样的:
States <- data.frame(Regions = c("Sri Lanka (more info)", "Guyana (more info)", "Mongolia", "Kazakhstan (more info)", "Suriname"))
运行代码后,abc的输出就是你期望的结果:
[1] "Sri Lanka" "Guyana" "Mongolia" "Kazakhstan" "Suriname"
内容的提问来源于stack exchange,提问作者Sukriti Singh
相关产品推荐
相关产品推荐

