R语言中拆分向量元素并交换下划线两侧内容的最简方法
最简实现方法
嘿,这个需求用base R自带的sub()函数就能轻松搞定,不需要额外安装任何包,应该是最简洁的方案了!
步骤分解:
- 先确认你的向量定义:
myvec <- c("08AD09144_NACC022453", "08AD8245_NACC657970")
- 用
sub()配合正则表达式完成交换:
result <- sub("(.*)_(.*)", "\\2_\\1", myvec)
正则逻辑说明:
(.*)_(.*)会把每个字符串分成两个捕获组:下划线左侧的所有内容是第一组\\1,右侧的所有内容是第二组\\2- 替换时写成
\\2_\\1,就把两组的位置交换,同时保留下划线分隔符
- 验证结果:
print(result) # 输出: # [1] "NACC022453_08AD09144" "NACC657970_08AD8245"
备选方案(如果你习惯用tidyverse):
如果你平时常用stringr包,也可以用str_replace(),语法几乎一致:
library(stringr) result <- str_replace(myvec, "(.*)_(.*)", "\\2_\\1")
内容的提问来源于stack exchange,提问作者Yamuna_dhungana
相关产品推荐
相关产品推荐

