如何在R语言中给数字添加括号?与添加短横线方法是否相同?
操作逻辑说明
给数字添加括号和你之前掌握的加短横线方法核心逻辑完全一致,本质都是先对数字串做分组切割,再给对应分组拼接目标符号,仅替换时的拼接规则有差异。
R 语言实现方案
以下两种方式都可以实现123456789转(123)456789的需求,你可以根据自己的使用习惯选择:
- 方法1:基础R 正则替换实现
不需要安装额外依赖,直接用内置的sub()函数做分组替换即可,正则规则默认只匹配第一个符合规则的片段,刚好适配单条数字串的处理:
# 输入是字符类型 sub('^(\\d{3})(\\d+)$', '(\\1)\\2', '123456789') # 输入是数值类型的话先转字符 sub('^(\\d{3})(\\d+)$', '(\\1)\\2', as.character(123456789))
运行后直接返回结果:"(123)456789"
- 方法2:stringr 包实现
如果你常用tidyverse生态的工具,用str_replace()的写法更统一,也方便批量处理向量:
library(stringr) # 单条处理 str_replace('123456789', '^(\\d{3})(\\d+)$', '(\\1)\\2') # 批量处理数字向量 num_vec <- c('123456789', '987654321', '111222333') str_replace(num_vec, '^(\\d{3})(\\d+)$', '(\\1)\\2')
如果需要调整括号包裹的位数,只要修改正则里\\d{3}的数值即可,操作和你之前改短横线的分组规则完全相同。
内容的提问来源于stack exchange,提问作者JinG Z
相关产品推荐
相关产品推荐

