计算树中的分支总数

时间:2018-05-29 18:26:06

标签: r tree

我有以下矩阵:

> M
     [,1] [,2] [,3] [,4]
[1,]    1    1    3    2
[2,]    2    2    1    1
[3,]    3    2    3    1
[4,]    2    2    2    2
[5,]    1    1    1    1
[6,]    3    2    3    2
[7,]    1    1    3    1
[8,]    2    1    1    1

文件txt中的每一行都有四个以空格分隔的位置,代表树的路径。树由根节点和形成层次结构的附加节点的级别组成:第一级和第三级可以具有三个节点(1,2或3);其余的位置只能假设两个值:1或2.

然后,前面例子描述的树如下:

enter image description here

我会计算树中分支的总数。例如,上面描述的树总共有21个分支。

我的解决方案如下:

nrow(unique( M[ , 1:2 ] ))+nrow(unique( M[ , 1:3 ] ))+nrow(unique( M[ , 1:4 ] ))

但它返回18 ......

1 个答案:

答案 0 :(得分:1)

这是一种在一行中完成所有操作的方法:

sum(sapply(1:ncol(M), function(x) nrow(unique(M[, 1:x, drop = FALSE]))))

正如评论中指出的那样,您的问题似乎是您没有包含唯一的第1列元素。