【问题标题】:How to extract some characters based on certain patterns from a vector?如何根据向量中的某些模式提取某些字符?
【发布时间】:2015-12-08 04:56:43
【问题描述】:

这是数据

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

【问题讨论】:

  • 在Z中,以“b0”开头的字符串的第三个元素是d35。整个字符串是“b013|b021|d35|c33”。
  • 好的,我在下面发布了一个解决方案。

标签: r vector text-extraction


【解决方案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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 2020-09-12
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 2012-06-02
    相关资源
    最近更新 更多