如何根据向量中的某些模式提取某些字符?
How to extract some characters based on certain patterns from a vector?
这是数据
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
.
我们可以试试
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"
这是数据
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
.
我们可以试试
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"