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

R语言:如何批量删除数据框单元格内各子串竖线后的内容?

解决R语言DataFrame单元格内容处理问题

你的问题出在正则表达式的贪婪匹配上:\\|.*中的.*会从第一个|开始匹配到字符串的末尾,所以只保留了第一个子串的前半部分。下面提供两种可行的解决方法:

方法一:调整正则表达式(推荐)

使用\\|[^;]*作为匹配规则,其中[^;]*表示匹配任意非分号的字符(零个或多个),这样只会删除每个分号分隔子串内第一个|之后的内容,不会跨过分号影响其他子串:

bla = data.frame(mycol = "bla_v2_2072|ID:61462952|;bla_v2_0113|ID:61460993|")
bla$mycol_cleaned <- gsub("\\|[^;]*", "", bla$mycol)
# 查看结果
bla$mycol_cleaned
# 输出:"bla_v2_2072;bla_v2_0113"

方法二:拆分-处理-合并

先将字符串按分号拆分为独立子串,逐个处理后再合并:

bla = data.frame(mycol = "bla_v2_2072|ID:61462952|;bla_v2_0113|ID:61460993|")
# 拆分字符串
split_parts <- strsplit(bla$mycol, ";")[[1]]
# 对每个子串删除第一个|后的内容
cleaned_parts <- sapply(split_parts, function(x) gsub("\\|.*", "", x))
# 合并为原格式
bla$mycol_cleaned <- paste(cleaned_parts, collapse = ";")

内容的提问来源于stack exchange,提问作者Saraha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 22:27:20