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

通过删除部分字符串来重命名树提示标签

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

    编辑:澄清

    我想重命名 tip.labels 的nwk树。当前标签的示例是:

    AB177299.1 Uncultured bacterium gene for 16S rRNA, clone: ODP1251B1.3

    但我只是想要开头的数字ID,所以 AB177299.1 .我的第一个爱好是使用 gsub() 在…上 tree$tip.label 但我的问题是,每个数字ID和下面的文本对于每个提示都是不同的。然后,如果我能够使用 order()

    tip.ids <- rownames(taxonomy)
    tree$tip.label[order(tree$tip.label) %in%
                             tip.ids] <- tip.ids
    

    这并没有改变我树上的任何东西,我不知所措。

    为了再现性。 taxonomy 不包括在内,因为您只需要 tip.ids

    > dput(tip.ids)
    c("AB109878.1", "AB109879.1", "AB109880.1", "AB109881.1", "AB109882.1", 
    "AB109883.1", "AB109884.1", "AB109885.1")
    
    > dput(tree)
    structure(list(edge = structure(c(9L, 10L, 10L, 9L, 11L, 11L, 
    12L, 13L, 13L, 12L, 14L, 14L, 15L, 15L, 10L, 1L, 2L, 11L, 3L, 
    12L, 13L, 4L, 5L, 14L, 6L, 15L, 7L, 8L), dim = c(14L, 2L)), edge.length = c(0.0341921975, 
    5e-09, 0.12821348, 0.000367458500000008, 0.027617765, 0.037677039, 
    0.028633124, 0.014468092, 5e-09, 0.009763081, 0.078168769, 0.021640684, 
    0.341568464, 0.092957415), Nnode = 7L, node.label = c("root", 
    "0.917", "", "0.929", "0.921", "0.302", "0.692"), tip.label = c("'AB109881.1 Uncultured archaeon gene for 16S rRNA, partial sequence, clone:pMLA-4'", 
    "'AB109880.1 Uncultured archaeon gene for 16S rRNA, partial sequence, clone:pMLA-3'", 
    "'AB109883.1 Uncultured archaeon gene for 16S rRNA, partial sequence, clone:pMLA-6'", 
    "'AB109879.1 Uncultured archaeon gene for 16S rRNA, partial sequence, clone:pMLA-2'", 
    "'AB109884.1 Uncultured archaeon gene for 16S rRNA, partial sequence, clone:pMLA-7'", 
    "'AB109878.1 Uncultured archaeon gene for 16S rRNA, partial sequence, clone:pMLA-1'", 
    "'AB109882.1 Uncultured archaeon gene for 16S rRNA, partial sequence, clone:pMLA-5'", 
    "'AB109885.1 Uncultured archaeon gene for 16S rRNA, partial sequence, clone:pMLA-8'"
    )), class = "phylo", order = "cladewise")
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   crikey    2 年前

    也许其中一个选项对你有用。

    library(tidyverse, quietly = TRUE)                                                                                                                                                               
    
    text <- "'AB109880.1 Uncultured archaeon gene for 16S rRNA, partial sequence, clone:pMLA-3'"
    
    # Option 1
    paste0("AB", parse_number(text))
    # Option 2
    str_split(text, " ")[[1]][1]