gpt4 book ai didi

r - 调用梯形函数后如何在APE中获得正确的提示标签顺序

转载 作者:行者123 更新时间:2023-12-04 06:34:12 24 4
gpt4 key购买 nike

我正在尝试根据系统发育树中发现的提示标签对数据帧的行进行排序。我打算这样做的方法是使用 match功能类似于来自 this question 的答案,但是我被卡住了,因为 tip.label ape 的属性(property)如果您使用 ladderize 重新排序节点,phylo 对象不会改变功能。

library(ape)
tree <- read.tree(text = "(((A,B),(C,D)),E);")
tree2 <- ladderize(tree, right = FALSE)
tree$tip.label
#> [1] "A" "B" "C" "D" "E"
tree2$tip.label
#> [1] "A" "B" "C" "D" "E"

注意 tip.label的顺序即使树的视觉表示发生了变化,也没有改变。在这个简单的例子中,树在 ladderize 之后的视觉顺序功能是 E A B C D (绘制后在树上从下到上阅读)。我如何获得 tip.label 的副本向量,其中的顺序反射(reflect)了树中节点的新顺序?

最佳答案

看来关键是看edge属性(property)。提示总是第一个被赋予 ID 的节点,它只会对应于 tip.label 中的位置。向量。

library(ape)
tree <- read.tree(text = "(((A,B),(C,D)),E);")
tree2 <- ladderize(tree, right = FALSE)
tree$tip.label
#> [1] "A" "B" "C" "D" "E"
tree2$tip.label
#> [1] "A" "B" "C" "D" "E"
plot(tree2)
nodelabels()
tiplabels()

第一步是从边矩阵的第二列中过滤掉内部节点:
is_tip <- tree2$edge[,2] <= length(tree2$tip.label)
#> [1] TRUE FALSE FALSE TRUE TRUE FALSE TRUE TRUE

ordered_tips <- tree2$edge[is_tip, 2]
#> [1] 5 1 2 3 4

然后您可以使用此向量以正确的顺序提取提示:
tree2$tip.label[ordered_tips]
#> [1] "E" "A" "B" "C" "D"

关于r - 调用梯形函数后如何在APE中获得正确的提示标签顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34364660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com