2010-02-22 9 views
11

मेरे पास छवियों के रूप में मुझे एक डेंड्रोग्राम दिया गया है। चूंकि यह बहुत बड़ा नहीं है, इसलिए मैं इसे "हाथ से" आर वस्तु में बना सकता हूं।मैं मैन्युअल रूप से एक डेंडरोग्राम (या "hclust") ऑब्जेक्ट कैसे बना सकता हूं? (आर में)

तो मेरा सवाल यह है कि मैं मैन्युअल रूप से डेंड्रोग्राम (या "hclust") ऑब्जेक्ट कैसे बना सकता हूं, जब मेरे पास डेंडरोग्राम छवि हो?

मुझे लगता है कि "as.dendrogram" नामक एक फ़ंक्शन है लेकिन मैं इसका उपयोग करने के तरीके पर एक उदाहरण नहीं ढूंढ पाया।

(पुनश्च: इस पोस्ट here से मेरे सवाल का पीछा कर रहा है)

बहुत धन्यवाद, ताल

उत्तर

21

मुझे लगता है कि आप एक hclust वस्तु बनाने, और फिर इसे एक dendrogram as.dendrogram उपयोग करने के लिए परिवर्तित करने की बेहतर हैं, फिर सीधे एक डेंडरोग्राम बनाने की कोशिश कर रहा है। hclust ऑब्जेक्ट के तत्वों का अर्थ देखने के लिए ?hclust सहायता पृष्ठ देखें।

यहाँ चार पत्ते ए, बी, सी, और डी के साथ एक सरल उदाहरण है, पहले एबी, तो सीडी, और अंत में एबी सीडी के संयोजन:

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

ग्रेट विचार Aniko - धन्यवाद! –

4

पूरी तरह से मैनुअल ... बड़े के लिए अनुशंसित नहीं डेटासेट।

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

धन्यवाद। यद्यपि आपने कहा - दिल की बेहोशी के लिए नहीं :) –

संबंधित मुद्दे