2010-02-22 9 views
11

Resimler olarak bana verilen bir dendrogram var. Çok büyük olmadığından, "el ile" bir R nesnesine yapılandırabilirim.Elle bir dendrogram (veya "hclust") nesnesi nasıl oluşturabilirim? (R)

Bu yüzden sorum, dendrogram görüntüsünün tamamı elimde olduğunda dendrogram (veya "hclust") nesnesini el ile nasıl oluşturabilirim?

"as.dendrogram" adlı bir işlev olduğunu görüyorum. Ancak, nasıl kullanılacağı konusunda bir örnek bulamadık.

(ps: Bu mesaj here den sorumu takip ediyor)

çok teşekkür ederiz, Tal

cevap

21

Seni as.dendrogram kullanarak bir dendrogramın dönüştürerek sonra hclust nesneyi oluşturma ve daha iyi olduğunu düşünüyorum sonra doğrudan bir dendrogram oluşturmaya çalışıyorum. hclust nesnesinin öğelerinin anlamlarını görmek için ?hclust yardım sayfasına bakın.

a <- list() # initialize empty object 
# define merging pattern: 
# negative numbers are leaves, 
# positive are merged clusters (defined by row number in $merge) 
a$merge <- matrix(c(-1, -2, 
        -3, -4, 
        1, 2), nc=2, byrow=TRUE) 
a$height <- c(1, 1.5, 3) # define merge heights 
a$order <- 1:4    # order of leaves(trivial if hand-entered) 
a$labels <- LETTERS[1:4] # labels of leaves 
class(a) <- "hclust"  # make it an hclust object 
plot(a)      # look at the result 

#convert to a dendrogram object if needed 
ad <- as.dendrogram(a) 
+0

Harika fikir Aniko - teşekkürler! –

4

Tamamen manuel ... büyük önerilmez: Burada

ilk önce AB, CD, ve son olarak AB-CD birleştirerek dört yaprakları A, B, C ve D ile basit bir örnek veri kümeleri.

tree<-list(); 
attributes(tree)<-list(members=18,height=3); 
class(tree)<-"dendrogram"; 

tree[[1]]<-list(); 
attributes(tree[[1]])<-list(members=4,height=2,edgetext="1"); 
tree[[1]][[1]]<-list(); 
attributes(tree[[1]][[1]])<-list(members=2,height=1,edgetext="H"); 
    tree[[1]][[1]][[1]]<-list(); 
    attributes(tree[[1]][[1]][[1]])<-list(members=1,height=0,edgetext="H",label="1HH",leaf=TRUE); 
    tree[[1]][[1]][[2]]<-list(); 
    attributes(tree[[1]][[1]][[2]])<-list(members=1,height=0,edgetext="T",label="1HT",leaf=TRUE); 
tree[[1]][[2]]<-list(); 
attributes(tree[[1]][[2]])<-list(members=2,height=1,edgetext="T"); 
    tree[[1]][[2]][[1]]<-list(); 
    attributes(tree[[1]][[2]][[1]])<-list(members=1,height=0,edgetext="H",label="1TH",leaf=TRUE); 
    tree[[1]][[2]][[2]]<-list(); 
    attributes(tree[[1]][[2]][[2]])<-list(members=1,height=0,edgetext="T",label="1TT",leaf=TRUE); 
tree[[2]]<-list(); 
attributes(tree[[2]])<-list(members=2,height=2,edgetext="2"); 
tree[[2]][[1]]<-list(); 
attributes(tree[[2]][[1]])<-list(members=1,height=0,edgetext="H",label="2H",leaf=TRUE); 
tree[[2]][[2]]<-list(); 
attributes(tree[[2]][[2]])<-list(members=1,height=0,edgetext="T",label="2T",leaf=TRUE); 
tree[[3]]<-list(); 
attributes(tree[[3]])<-list(members=4,height=2,edgetext="3"); 
tree[[3]][[1]]<-list(); 
attributes(tree[[3]][[1]])<-list(members=2,height=1,edgetext="H"); 
    tree[[3]][[1]][[1]]<-list(); 
    attributes(tree[[3]][[1]][[1]])<-list(members=1,height=0,edgetext="H",label="3HH",leaf=TRUE); 
    tree[[3]][[1]][[2]]<-list(); 
    attributes(tree[[3]][[1]][[2]])<-list(members=1,height=0,edgetext="T",label="3HT",leaf=TRUE); 
tree[[3]][[2]]<-list(); 
attributes(tree[[3]][[2]])<-list(members=2,height=1,edgetext="T"); 
    tree[[3]][[2]][[1]]<-list(); 
    attributes(tree[[3]][[2]][[1]])<-list(members=1,height=0,edgetext="H",label="3TH",leaf=TRUE); 
    tree[[3]][[2]][[2]]<-list(); 
    attributes(tree[[3]][[2]][[2]])<-list(members=1,height=0,edgetext="T",label="3TT",leaf=TRUE); 
tree[[4]]<-list(); 
attributes(tree[[4]])<-list(members=2,height=2,edgetext="4"); 
tree[[4]][[1]]<-list(); 
attributes(tree[[4]][[1]])<-list(members=1,height=0,edgetext="H",label="4H",leaf=TRUE); 
tree[[4]][[2]]<-list(); 
attributes(tree[[4]][[2]])<-list(members=1,height=0,edgetext="T",label="4T",leaf=TRUE); 
tree[[5]]<-list(); 
attributes(tree[[5]])<-list(members=4,height=2,edgetext="5"); 
tree[[5]][[1]]<-list(); 
attributes(tree[[5]][[1]])<-list(members=2,height=1,edgetext="H"); 
    tree[[5]][[1]][[1]]<-list(); 
    attributes(tree[[5]][[1]][[1]])<-list(members=1,height=0,edgetext="H",label="5HH",leaf=TRUE); 
    tree[[5]][[1]][[2]]<-list(); 
    attributes(tree[[5]][[1]][[2]])<-list(members=1,height=0,edgetext="T",label="5HT",leaf=TRUE); 
tree[[5]][[2]]<-list(); 
attributes(tree[[5]][[2]])<-list(members=2,height=1,edgetext="T"); 
    tree[[5]][[2]][[1]]<-list(); 
    attributes(tree[[5]][[2]][[1]])<-list(members=1,height=0,edgetext="H",label="5TH",leaf=TRUE); 
    tree[[5]][[2]][[2]]<-list(); 
    attributes(tree[[5]][[2]][[2]])<-list(members=1,height=0,edgetext="T",label="5TT",leaf=TRUE); 
tree[[6]]<-list(); 
attributes(tree[[6]])<-list(members=2,height=2,edgetext="6"); 
tree[[6]][[1]]<-list(); 
attributes(tree[[6]][[1]])<-list(members=1,height=0,edgetext="H",label="6H",leaf=TRUE); 
tree[[6]][[2]]<-list(); 
attributes(tree[[6]][[2]])<-list(members=1,height=0,edgetext="T",label="6T",leaf=TRUE); 


windows(width=3,rescale="fixed"); 
par(ps=8); 
plot(rev(tree),center=TRUE,horiz=TRUE); 
+0

Teşekkürler. Söylediğiniz gibi - kalbin zayıf değil :) –

İlgili konular