使用 R 中的系统发育树,我想创建一个矩阵,指示树的每个分支(B1 到 B8)是否与每个物种(A 到 E)相关联,其中 1 表示分支相关联。(如下图)
R 函数 which.edge() 可用于识别物种的终端分支。但它不能识别与每个物种相关的所有分支。对于每个物种,我可以使用什么函数来识别树中从根部到尖端的所有分支?
示例树
library(ape)
ex.tree <- read.tree(text="(A:4,((B:1,C:1):2,(D:2,E:2):1):1);")
plot(ex.tree)
edgelabels() #shows branches 1-8
这是我想创建的矩阵(物种 AE 作为列,分支 B1-B8 作为行),但功能简单,而不是手动创建。
B1 <- c(1,0,0,0,0)
B2 <- c(0,1,1,1,1)
B3 <- c(0,1,1,0,0)
B4 <- c(0,1,0,0,0)
B5 <- c(0,0,1,0,0)
B6 <- c(0,0,0,1,1)
B7 <- c(0,0,0,1,0)
B8 <- c(0,0,0,0,1)
Mat <- rbind(B1,B2,B3,B4,B5,B6,B7,B8)
colnames(Mat) <- c("A","B","C","D","E")
Mat
例如,分支 B2 属于物种 BE,但不属于物种 A。对于物种 E,存在分支 B2、B6、B8。
哪个 R 函数最好?提前致谢!