You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用R语言gsub函数移除指定标点与数字并保留目标内容?

解决方案

你可以用精准的正则表达式只移除括号及其内部的数字,同时保留开头的序号和点号,还能顺手去掉点号后的多余空格,代码如下:

# 先移除括号及其中的数字(包括括号前可能的空格)
df$column <- gsub("\\s*\\(\\d+\\)", "", df$column)
# 再去掉点号后面的空格,把 "0. No" 转为 "0.No"
df$column <- gsub("(\\d\\.)\\s", "\\1", df$column)

也可以合并成一行嵌套调用:

df$column <- gsub("(\\d\\.)\\s", "\\1", gsub("\\s*\\(\\d+\\)", "", df$column))

为什么之前的方法不对?

你之前用的gsub("[[:punct:]]", "", df$column)会移除所有标点(包括开头的点号),gsub("[[:num:]]", "", df$column)会删掉所有数字(包括开头的序号),这显然不是你想要的。我们的正则是精准定位目标:

  • \\s*\\(\\d+\\):匹配括号前的可选空格、左括号、括号里的数字、右括号,只把这部分替换为空。
  • (\\d\\.)\\s:捕获开头的「数字+点号」,匹配后面的空格,替换成捕获到的内容,相当于去掉点号后的空格。

测试效果

假设你的数据是:

df <- data.frame(column = c("0. No (1)", "1. Yes(2)", "2. Refuse to Answer (3)", "3. Agree(4)", "4. Disagree (5)"))

运行代码后,df$column的结果为:

[1] "0.No"               "1.Yes"              "2.Refuse to Answer" "3.Agree"            "4.Disagree"

完全符合你的期望。

内容的提问来源于stack exchange,提问作者Peter Chung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 19:28:07