【问题标题】:R. Remove everything between to delimiter characters [duplicate]R.删除分隔符之间的所有内容[重复]
【发布时间】:2020-09-29 20:50:30
【问题描述】:

我在 C 列中有一个带有这种表达式的数据框:

GT_rs9628326:N_rs9628326
GT_rs1111:N_rs1111
GT_rs8374:N_rs8374

使用 R,我想删除第一个“T”和“:”之间的所有内容,以及“N”之后的所有内容。我知道这可以用 gsub 完成。我会得到:

GT:N
GT:N
GT:N

【问题讨论】:

    标签: r gsub


    【解决方案1】:

    也许你可以试试

    gsub("_\\w+","",s)
    

    给予

    [1] "GT:N" "GT:N" "GT:N"
    

    数据

    s <- c("GT_rs9628326:N_rs9628326","GT_rs1111:N_rs1111","GT_rs8374:N_rs8374")
    

    【讨论】:

      【解决方案2】:

      另一种选择是用: 拆分字符串,然后替换不必要的文本,以便用相同的拆分符号再次折叠在一起(感谢@ThomasIsCoding 数据):

      #Data
      v1 <- c("GT_rs9628326:N_rs9628326","GT_rs1111:N_rs1111","GT_rs8374:N_rs8374")
      #Code
      unlist(lapply(lapply(strsplit(v1,split = ':'),
                           function(x) sub("_[^_]+$", "", x)),
             function(x) paste0(x,collapse = ':')))
      

      输出:

      [1] "GT:N" "GT:N" "GT:N"
      

      【讨论】:

        【解决方案3】:

        使用来自stringrstr_remove

        library(stringr)
        str_remove_all(s, "_\\w+")
        #[1] "GT:N" "GT:N" "GT:N"
        

        数据

        s <- c("GT_rs9628326:N_rs9628326","GT_rs1111:N_rs1111","GT_rs8374:N_rs8374")
        

        【讨论】:

          【解决方案4】:

          删除"T""N" 之后的单词。使用@ThomasIsCoding 的数据。

          gsub('(?<=T|N)\\w+', '', s, perl = TRUE)
          #[1] "GT:N" "GT:N" "GT:N"
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-01-08
            • 1970-01-01
            • 1970-01-01
            • 2021-11-29
            • 2012-05-28
            • 2018-06-22
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多