在R语言中如何从长度可变的字符串末尾提取最后3个字符?
提取字符向量最后3个字符的几种简便方法
针对你给出的字符向量:
vec <- c("1ZQOYNBAA55", "2JSNHGKLRBB66", "3HVXCC77", "4LDD88", "5CIFMTLYXEE99")
以下是几种无需依赖固定字符串长度的实现方式:
方法1:Base R 结合 nchar 和 substr
利用nchar()获取每个字符串的长度,计算出提取的起始位置(总长度减2),再用substr()提取:
vec_ends <- substr(vec, nchar(vec) - 2, nchar(vec)) # 输出结果 vec_ends # [1] "A55" "B66" "C77" "D88" "E99"
方法2:stringr 包的 str_sub(推荐)
stringr 包的str_sub()支持负索引(从末尾计数),直接指定起始位置为-3即可:
# 先安装/加载包 # install.packages("stringr") library(stringr) vec_ends <- str_sub(vec, start = -3) vec_ends # [1] "A55" "B66" "C77" "D88" "E99"
方法3:Base R 正则表达式
用sub()匹配任意字符直到最后3个,替换为捕获到的最后3个字符:
vec_ends <- sub(".*(.{3})$", "\\1", vec) vec_ends # [1] "A55" "B66" "C77" "D88" "E99"
内容的提问来源于stack exchange,提问作者Roasty247
相关产品推荐
相关产品推荐

