[英]Calculate the total number of branches in a 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或3)。 其余頭寸只能采用兩個值:1或2。
然后,前面的示例描述的樹如下:
我將計算樹中的分支總數。 例如,上面描述的樹共有21個分支。
我的解決方案如下:
nrow(unique( M[ , 1:2 ] ))+nrow(unique( M[ , 1:3 ] ))+nrow(unique( M[ , 1:4 ] ))
但它返回18 ...
這是一種可以一行完成全部操作的方法:
sum(sapply(1:ncol(M), function(x) nrow(unique(M[, 1:x, drop = FALSE]))))
正如評論中指出的那樣,看來您的問題是您沒有包括唯一的第一列元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.