如何从下划线分隔的复杂ID中提取第三段元素作为绘图标签
R 语言实现方案
以下两种实现方式都可以直接完成需求:
方法1:仅用基础 R 函数实现(无需安装额外包)
- 先将你的所有ID字符串存储为一个字符向量,示例如下:
ids <- c("3_K97_T12_High_2_Apples", "4_K98_T13_Low_3_Bananas", "5_K99_T14_Mid_1_Oranges") - 调用
strsplit按下划线分割字符串,遍历提取每个分割结果的第3段即可:
# 分割后提取第3段,存储为Tiles字符向量 Tiles <- sapply(strsplit(ids, split = "_"), function(x) x[3])
运行后直接打印Tiles即可验证结果,示例输出为 "T12" "T13" "T14"。
方法2:用stringr包实现(代码更简洁)
如果你已经加载tidyverse套件,可直接调用str_split_fixed处理:
library(stringr) # 按下划线拆分为3列矩阵,直接取第3列即可 Tiles <- str_split_fixed(ids, "_", n = 3)[,3]
参数n=3指定仅拆分出前3段,不需要处理后续内容,运行效率更高。
绘图调用示例
生成Tiles向量后,直接传入text函数的label参数即可:
# 示例绘图数据 x <- c(1,2,3) y <- c(4,5,6) plot(x, y, pch = 16) # 给每个点添加对应标签,pos=3表示标签显示在点上方 text(x, y, labels = Tiles, pos = 3, col = "red", cex = 0.9)
内容的提问来源于stack exchange,提问作者Drashti
相关产品推荐
相关产品推荐

