合併兩個樹狀圖,我想要麼:在特定節點
- 刪除子樹然後合併一個新的子樹到原來的樹狀圖,以便它是在同一位置上的一個刪除。
- 或用另一個替換一個子樹。
我知道merge()
可以合併頂部的兩個樹形圖。它是否也在指定的節點上合併它。如果是這樣如何?如果沒有,是否有另一種方法可以做到這一點?
我知道cut()
在某個高度或特定數量的節點上切割樹形圖。但是,如何讓它只刪除特定的子樹?
子樹的規格將是其中第一個節點的屬性。例如attr(n,"attribute")== something
,這可以通過dendrapply()
完成。
下面是如何製作樹狀圖的示例代碼。
library("stats")
library("fastcluster")
x=matrix(c(1:20),ncol=4)
y=matrix(c(21:40),ncol=4)
#creating hclusters
xcl=hclust.vector(x)
ycl=hclust.vector(y)
#converting to dendrograms
xdend=as.dendrogram(xcl)
ydend=as.dendrogram(ycl)
# merging two dendrograms at the top
zdend=merge(xdend,ydend)
- 注:我發現瞭如何通過以下替換子樹。
merging <- function(n,subtree){
if (attr(n,"members")==2){
treeMerged2<<- merge(n,subtree)}}
D=rbind(
+ c(1,1,1,1,1),
+ c(1,2,1,1,1),
+ c(2,2,2,2,2),
+ c(2,2,2,2,1),
+ c(3,3,3,3,3),
+ c(3,3,3,3,2))
Ddend=as.dendrogram(hclust.vector(D))
tr=dendrapply(Ddend,merging, xdend)
問題:
1)它取代它的姐妹子樹而不是一個期望的。
2)原始樹沒有變化。
3)創建的新樹「treeMerged2」只有附加的子樹和姐妹子樹,而不是樹的其餘部分。
問:
- 我如何使輸出是原來的樹在它新的子樹?
謝謝。