【问题标题】:Change tip labels in phylogeny in R在 R 中更改系统发育中的尖端标签
【发布时间】:2019-08-18 19:34:23
【问题描述】:

我有一个csv 文件,其中包含数百个物种的物种名称,这些名称与它们在我的系统发育中出现在$tip.labels 中的顺序相同。我想用与$tip.labels 输出的原始物种名称顺序相同的新物种名称替换这些物种名称。我想保留我的树拓扑,只是尝试用新的分类名称更新我的系统发育。

$tip.labels 的输出:

old_taxonomic_names
old_species_name_1
old_species_name_2
old_species_name_3
...

具有更新分类的输入:

new_taxonomic_names
new_species_name_1
new_species_name_2
new_species_name_3
...

【问题讨论】:

  • 你能提供一些数据和预期的输出吗?我的理解是否正确,您希望保留树拓扑并只交换提示标签?
  • 是的,保留树形拓扑结构并只交换尖端标签
  • 那为什么不直接把新物种列表写到tip标签上呢?它应该可以工作(你只需要重新绘制树)。
  • 我该怎么做?我更新了我的帖子
  • 请参考我发布的答案。

标签: r phylogeny


【解决方案1】:

考虑以下玩具示例:

library("ape")

orig_tiplabels <- c("Alice", "Bob", "Cindy")
orig_tree <- rtree(n = 3, tip.label = orig_tiplabels)
plot(orig_tree)

new_tiplabels <- c("Debbie", "Elrond", "Frank")
orig_tree$tip.label <- new_tiplabels
plot(orig_tree)

orig_tree 是以下树:

由于我们只想更改提示标签,我们可以直接更新$tip.label 属性。这为我们生成了一个带有更新的提示标签的“新”树,但保留了拓扑,如下所示。

只要新标签的数量与现有标签的数量(在树中)相同,并且使用相同的树对象,这将起作用。

【讨论】:

  • 不明白为什么你真的需要你的“评论太长”免责声明,这似乎是一个完全合理的答案......match() 的解决方案可能会稍微安全一些,因为它没有不要依赖于知道/查找提示的顺序...
  • 主要是因为图片。以前从未使用过match(),你能告诉我怎么做吗?
  • 我的意思是我认为您不需要免责声明。 new_tree &lt;- orig_tree; new_tree$tip.label &lt;- new_tiplabels[match(orig_tree$tip.label,orig_tiplabels)]; par(mfrow=c(1,2)); plot(orig_tree); plot(new_tree)
  • 我有一个新的但相关的帖子:stackoverflow.com/questions/57680924/…
猜你喜欢
  • 1970-01-01
  • 2014-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-09
相关资源
最近更新 更多