我有包含字符串的数据框。请参阅以下代码 -
mydf = data.frame(x=c("ads 1-x as", "sda 1-xxaa sad", "sda a-x sad"))
我想要跟随模式的单词:数字后跟连字符后跟一个字母,只能用数字替换。
预期输出
"ads 1 as", "sda 1-xxaa sad", "sda a-x sad"
答案 0 :(得分:2)
我们可以使用sub
(或者如果有更多实例,gsub
)来匹配作为一组捕获的一个或多个数字(\\d+
- 请注意单词边界(在此之前\\b
)之后是连字符(-
)和单个字母([A-Za-z]
)(为了避免与更多字母匹配) - 使用单词边界 - \\b
)并替换为捕获组的后向引用(\\1
)
gsub("\\b(\\d+)-[A-Za-z]\\b", "\\1", mydf$x)
#[1] "ads 1 as" "sda 1-xxaa sad" "sda a-x sad"