【问题标题】:Getting a sub string from a vector of strings从字符串向量中获取子字符串
【发布时间】:2015-04-30 16:45:55
【问题描述】:

我有一个字符串向量

ids <- c("NM_006690.2_PROBE1","333212.1_PROBE1","7602049CB1_PROBE1","NM_018065.1_PROBE1","1539036CB1_PROBE1","NM_021019.1_PROBE1","1440608CB1_PROBE1","NM_031270.1_PROBE1","613678CB1_PROBE1")

这里已经有很多讨论:extract a substring in R according to a pattern

我想删除dot(.) 之后的所有内容,并想删除_ 之后的所有内容PROBE。我设法删除了.

read.table(text = ids, sep = ".", as.is = TRUE, fill=TRUE)$V1

我现在介意在 613678CB1_PROBE1 这样的情况下删除 PROBE 之前的 _ ,我想要的输出是 613678CB1 。怎么做。

输出:

"NM_006690", "333212"  , "7602049CB1"  "NM_018065","1539036CB1"  "NM_021019" "1440608CB1"  "NM_031270","613678CB1")

注意:有两个_,一个附加NM,另一个附加PROBE。我希望所有东西都被删除_PROBE

【问题讨论】:

  • 如果您发布预期的输出会更好。第一种情况,需要NM_
  • @akrun 。检查更新
  • 另外,请在发布之前测试您的代码。 ids &lt;- 行有语法错误。
  • @G.Grothendieck,我可以知道语法错误。
  • 当您在 R 中输入错误代码时会出现错误,但似乎有人已经为您解决了这个问题。

标签: r substring


【解决方案1】:

您的要求似乎是:

gsub("\\..*|_PROBE.*", "", ids)

演示:

gsub("\\..*|_PROBE.*", "", ids)
# [1] "NM_006690"  "333212"     "7602049CB1" "NM_018065"  "1539036CB1"
# [6] "NM_021019"  "1440608CB1" "NM_031270"  "613678CB1" 

【讨论】:

    【解决方案2】:

    你只是想要这个吗?

    ids <- c("NM_006690.2_PROBE1", "333212.1_PROBE1"  , "7602049CB1_PROBE1" , "NM_018065.1_PROBE1",
             "1539036CB1_PROBE1",  "NM_021019.1_PROBE1", "1440608CB1_PROBE1",  "NM_031270.1_PROBE1",
             "613678CB1_PROBE1")
    ids <- read.table(text = ids, sep = ".", as.is = TRUE, fill=TRUE)$V1
    
    library(stringr)
    ids <- str_replace(ids, "_PROBE1", "")
    

    给你这个:

    "NM_006690"  "333212"     "7602049CB1" "NM_018065"  "1539036CB1" "NM_021019"  "1440608CB1" "NM_031270"  "613678CB1"  
    

    【讨论】:

    • @akrun,我认为 OP 没有发布正确的输入或输出数据。
    • 是的,他之间还有一个步骤,所以前两行实际上是输入数据以及操作预先进行的转换......我编辑了我的帖子
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    相关资源
    最近更新 更多