【问题标题】:Calculate the total number of branches in a tree计算一棵树的总分支数
【发布时间】:2018-05-30 02:50:32
【问题描述】:

我有以下矩阵:

> 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。

那么,前面例子描述的树如下:

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

我的解决方案如下:

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

但它返回 18...

【问题讨论】:

  • 您的公式中不需要M[,1] 吗?那将增加三个。
  • 如果你添加nrow(unique(M[, 1, drop = FALSE])),你会得到你想要的吗?
  • 你没有从根->第一个节点计算分支。
  • 哦,谢谢!我忘记了根。

标签: r tree


【解决方案1】:

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

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

正如 cmets 中所指出的,您的问题似乎是您没有包含唯一的第一列元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 2017-09-29
    相关资源
    最近更新 更多