如何根据矢量中的某些模式提取一些字符?

时间:2015-12-08 04:56:43

标签: r vector text-extraction

以下是数据

x <- c("a01|a44;b013|b021|c35;c014|c035|c078")
y <- c("a03|a41;b033|b021|72;c014|c031|c078")
z <- c("a01|a44;c014|c035|c078;b013|b021|d35|c33")
v <- c(x, y, z)

我想从以"|"开头的字符串中提取由"b0"分隔的第三个元素。预期结果为c35,72,d35

1 个答案:

答案 0 :(得分:1)

我们可以尝试

sapply(strsplit(v, ';'), function(x) 
       sapply(strsplit(x[grep('^b0', x)], '[|]'), `[`,3))
 #[1] "c35" "72"  "d35"

或使用sub

 sub('.*;b0\\d{2}\\|[^|]+\\|([^;|]+).*', '\\1', v)
 #[1] "c35" "72"  "d35"