如何在R语言单元素向量中定位字符并提取指定子串?
解决方案
方法1:手动定位字符位置提取
单元素字符串没法直接用grep,但可以用gregexpr来定位字符的索引位置,它能返回单元素字符串里所有匹配字符的起始位置:
x <- c("133 45123; 4514;25") # 获取所有空格的位置 space_pos <- gregexpr(" ", x)[[1]] # 获取第一个分号的位置 semicolon_pos <- gregexpr(";", x)[[1]][1] # 提取从第一个空格后一位到第一个分号的内容(包含分号) result <- substr(x, space_pos[1] + 1, semicolon_pos) result # 输出:"45123;"
方法2:正则表达式直接提取(更省事)
不用手动找位置,直接匹配目标模式就行,不管是基础R还是stringr包都能实现:
基础R实现
x <- c("133 45123; 4514;25") # 匹配“数字+分号”的第一个实例 result <- regmatches(x, regexpr("\\d+;", x)) result # 输出:"45123;"
stringr包实现(更直观)
library(stringr) x <- c("133 45123; 4514;25") result <- str_extract(x, "\\d+;") result # 输出:"45123;"
内容的提问来源于stack exchange,提问作者Jn Rmro
相关产品推荐
相关产品推荐

