我想使用 data.frame 中的变量在 phylo 对象中设置“edge.length”。phylo 对象中的“node.label”“tip.label”对应于 data.frame 中的行名。如何使用 data.frame 中的变量设置 edge.length,同时确保数据正确匹配?在下面的代码中,它位于步骤 3 中。我希望匹配 edge.length,以便 node.label 或 tip.label 匹配 data.frame 中的 row.name。
## R code:
## load ape
library(ape)
## 1. A phylo object:
library(data.tree)
A1 <- Node$new("A1")
B1 <- A1$AddChild("B1")
C1 <- B1$AddChild("C1")
D1 <- C1$AddChild("D1")
E1 <- C1$AddChild("E1")
F1 <- E1$AddChild("F1")
G1 <- E1$AddChild("G1")
H1 <- G1$AddChild("H1")
A1.phylo <- as.phylo.Node(A1)
## 2. A data.frame:
set.seed(1)
df <- as.data.frame(rnorm(7, 5, 3))
names(df) <- "length"
row.names(df) <- c("B1","C1","D1","E1","F1","G1","H1")
## 3. Ad the data to A1.phylo$edge.length
A1.phylo$edge.length <- df$length ## wrong!!!