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

在R语言中将下一行下划线后内容追加到当前行,统一字符串后缀

解决R语言字符串拼接问题

给定如下向量:

x <- c("Q9NZ", "Q69Z_1036_1037_1_1_S1036", "A3K8", "P123_567_789_1_1_T567")

要实现将奇数位置的字符串拼接上其下一行字符串中_及后续内容,偶数位置字符串保持不变,可通过以下两种方法处理:

方法一:向量化直接处理

# 提取对应位置的后缀:第1行取第2行的后缀,第3行取第4行的后缀
suffixes <- sub("^[^_]+", "", x[c(2, 4, NA, NA)])
# 对奇数行执行拼接,偶数行直接保留原内容
result <- ifelse(seq_along(x) %% 2 == 1, paste0(x, suffixes), x)

# 输出结果
result
#> [1] "Q9NZ_1036_1037_1_1_S1036"  "Q69Z_1036_1037_1_1_S1036"
#> [3] "A3K8_567_789_1_1_T567"     "P123_567_789_1_1_T567"

方法二:分组处理(适配更多成对数据场景)

如果数据是按两两一组的规律排列,可先分组再操作:

# 将向量按每2个元素分为一组
groups <- split(x, ceiling(seq_along(x)/2))

# 遍历每组完成拼接
result <- unlist(lapply(groups, function(group) {
  # 提取组内第二个元素的下划线及后续内容
  suffix <- sub("^[^_]+", "", group[2])
  # 返回拼接后的第一个元素 + 原第二个元素
  c(paste0(group[1], suffix), group[2])
}))

关键正则说明

sub("^[^_]+", "", str) 的作用:

  • ^[^_]+:匹配字符串开头到第一个_之前的所有字符([^_]表示非下划线字符,+表示匹配一次或多次)
  • 用空字符串替换这部分内容,最终得到第一个_及之后的所有内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:03:17