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

问题描述 投票:0回答:1

编辑:澄清

我正在寻找在 R 中重命名我的 nwk 树的

tip.labels
。当前标签的一个示例是:

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

但我只想要开头的数字 ID,所以

AB177299.1
。我的第一个倾向是在
gsub()
上使用
tree$tip.label
,但我的问题是每个提示的每个数字 ID 和以下文本都是不同的。然后,我创建了所有数字 ID 的字符向量,如果我能够使用
order()
准确替换每个 ID,则可以将其用作提示名称。

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")
r tree
1个回答
0
投票

也许这些选项之一适合您。

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]
© www.soinside.com 2019 - 2024. All rights reserved.