如何在R语言中删除第一个分隔符“-”之前的字符串?
R语言保留第一个“-”之后所有内容的解决方法
给你三种简单可行的方法,都能满足需求:
方法1:用基础包的sub()函数(推荐,无需额外装包)
直接用正则表达式匹配并替换掉第一个“-”及之前的内容:
sample.names1 <- c("S0938-CR1","S0957-AB8","S0971-EGFP1-10") sample.names <- sub("^[^-]+-", "", sample.names1) # 查看结果 sample.names # 输出: [1] "CR1" "AB8" "EGFP1-10"
正则说明:^[^-]+- 匹配字符串开头到第一个“-”的所有内容,替换为空就得到后面的全部字符。
方法2:用stringr包的str_remove()(适合习惯tidyverse的用户)
如果平时常用tidyverse工具链,可以用这个更直观的函数:
# 首次使用先安装包 install.packages("stringr") library(stringr) sample.names <- str_remove(sample.names1, "^[^-]+-") sample.names
逻辑和sub()完全一致,只是函数写法更简洁。
方法3:改进你原来的strsplit写法
你之前的问题是strsplit会把所有“-”都拆分,只要指定只拆一次就能解决:
sample.names <- sapply(strsplit(sample.names1, "-", fixed = TRUE, n = 2), `[`, 2) sample.names
参数n=2限制拆分次数为1,这样每个元素只会被分成前后两部分,取第二部分就是你要的内容。
内容的提问来源于stack exchange,提问作者CaroZ
相关产品推荐
相关产品推荐

