我有以下矩阵:
> 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 ......
答案 0 :(得分:1)
这是一种在一行中完成所有操作的方法:
sum(sapply(1:ncol(M), function(x) nrow(unique(M[, 1:x, drop = FALSE]))))
正如评论中指出的那样,您的问题似乎是您没有包含唯一的第1列元素。