代码之家  ›  专栏  ›  技术社区  ›  RoyBatty

删除列表中给定字符后的每个子字符串

  •  0
  • RoyBatty  · 技术社区  · 2 年前

    我有一个列表,其结构如下:

    [1] "Atp|Barcelona|Concentration(ng/mL)|8|FALSE"

    我想提取第三个元素(用 | 符号,并为给定字符串删除 ( 象征

    所以我会得到这个角色:

    [1] "Concentration"

    我所做的首先是 | 象征然后,获取生成的列表的第三个元素。 为了能够使用gsub,我将其转换为字符,然后应用gsub函数,如下所示。

    y <- "Atp|Barcelona|Concentration(ng/mL)|8|FALSE"
    y <- strsplit(y,  "\\|")
    y <- y[[1]][3]
    y <- as.character(y)
    gsub("(.*","",y)
    

    但是,系统会提示此错误:

    invalid regular expression '(.*', reason 'Missing ')''
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   Tim Biegeleisen    2 年前

    您可以使用 strsplit 具有 unlist 此处:

    x <- "Atp|Barcelona|Concentration(ng/mL)|8|FALSE"
    output <- unlist(strsplit(x, "\\|"))[3]
    output
    
    [1] "Concentration(ng/mL)"
    

    如果某些输入可能至少有两个 | 分隔符,那么在尝试访问第三个元素之前,您可以首先检查上面输出的向量的大小。

        2
  •  0
  •   benson23    2 年前

    首先,你不需要 y <- as.character(y) ,因为结果已经属于类“character”。

    第二,你的问题在于内在的模式 gsub() ,在需要脱离开口支架的位置。因此,您的完整代码应该是:

    y <- "Atp|Barcelona|Concentration(ng/mL)|8|FALSE"
    y <- strsplit(y,  "\\|")
    y <- y[[1]][3]
    gsub("\\(.*","",y)
    
    [1] "Concentration"