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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 02:49:54