Как мне вручную создать объект dendrogram (или “hclust”)?(в R)

StackOverflow https://stackoverflow.com/questions/2310913

  •  22-09-2019
  •  | 
  •  

Вопрос

У меня есть дендрограмма, предоставленная мне в виде изображений.Поскольку он не очень большой, я могу сконструировать его "вручную" в объект R.

Итак, мой вопрос заключается в том, как мне вручную создать объект dendrogram (или "hclust"), когда все, что у меня есть, - это изображение dendrogram?

Я вижу, что существует функция под названием "as.dendrogram", но я не смог найти пример того, как ее использовать.

(p.s:Этот пост следует за моим вопросом от здесь)

Большое спасибо, Тал

Это было полезно?

Решение

Я думаю, вам лучше создать hclust объект, а затем преобразует его в дендрограмму с помощью as.dendrogram, затем пытается создать дендрограмму напрямую.Посмотрите на ?hclust страница справки, позволяющая увидеть значение элементов hclust объект.

Вот простой пример с четырьмя листьями A, B, C и D, объединяющий сначала A-B, затем C-D и, наконец, AB-CD:

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)

Другие советы

Полностью ручной...не рекомендуется для больших наборов данных.

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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top