2015-02-06 3 views
0

Следующий кодКак получить индекс списка списка

library(gplots) 
mydata <- mtcars 
hclustfunc <- function(x) hclust(x, method="complete") 
distfunc <- function(x) dist(x,method="euclidean") 

# Compute cluster 
d.mydata <- distfunc(mydata) 
fit.mydata <- hclustfunc(d.mydata) 
full_dend <- as.dendrogram(fit.mydata) 
full_dend[] 

Produce этот список списка:

[[1]] 
[[1]][[1]] # <--- How to access this 
[1] 31 
attr(,"members") 
[1] 1 
attr(,"height") 
[1] 0 
attr(,"label") 
[1] "Maserati Bora" # <--- of this 
attr(,"leaf") 
[1] TRUE 

[[1]][[2]] 
[[1]][[2]][[1]] 
[[1]][[2]][[1]][[1]] # <--- How to access this 
[1] 17 
attr(,"members") 
[1] 1 
attr(,"height") 
[1] 0 
attr(,"label") 
[1] "Chrysler Imperial" # <--- of this 
attr(,"leaf") 
[1] TRUE 
.... 

Есть ли способ я могу получить самые низкие показатели уровня для каждой записи, поэтому, наконец, я бы хотел напечатать это следующим образом:

Maserati Bora : 1.1 
    Chrysler Imperial: 1.2.1.1 
    ...etc... 

Или еще лучше, чтобы кадр данных, чтобы я мог писать в таблицу позже:

     ancestry 
    Maserati Bora  1.1 
    Chrysler Imperial 1.2.1.1 
+0

@akrun: спасибо. Как мне пройти через него и распечатать его или записать в таблицу. – pdubois

+0

@akrun: Мне нужны имена и последний указатель этого автомобиля. – pdubois

ответ

2

Попробуйте

library(reshape2) 
lst <- rapply(full_dend, function(x) attr(x, 'label'), how='list') 
m1 <- melt(lst) 
library(gtools) 
m2 <- m1[mixedsort(colnames(m1))] 

ancestry <- apply(m2[-ncol(m2)], 1, function(x) 
       paste(na.omit(x), collapse='.')) 
d1 <- data.frame(names=m1[,'value'], ancestry, stringsAsFactors=FALSE) 
head(d1,3) 
#    names ancestry 
#1  Maserati Bora  1.1 
#2 Chrysler Imperial 1.2.1.1 
#3 Cadillac Fleetwood 1.2.1.2.1 

Вот несколько первых элементов "LST"

lst 
#[[1]] 
#[[1]][[1]] 
#[1] "Maserati Bora" 

#[[1]][[2]] 
#[[1]][[2]][[1]] 
#[[1]][[2]][[1]][[1]] 
#[1] "Chrysler Imperial" 

#[[1]][[2]][[1]][[2]] 
#[[1]][[2]][[1]][[2]][[1]] 
#[1] "Cadillac Fleetwood" 
+0

ВЫ СДЕЛАЛИ МОЮ ЖИЗНЬ !!! – pdubois

+1

@pdubois Рад, что это помогло. – akrun

Смежные вопросы