簡體   English   中英

計算樹中的分支總數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM