# [R] how to extract the row names of a matrix using for loop or other looping

Uwe Ligges ligges at statistik.uni-dortmund.de
Sat Dec 10 18:37:29 CET 2005

```peter eric wrote:
> Hi all,
>   I have a matrix and its cluster...and i like to extract the row names of each cluster....but using the for loop or some other looping
>
>   a<-matrix(c(seq(3,45,3),seq(10,6,-1)),4,5,byrow=F)
>  col<-c("ra","rb","rc","rd","re")
>  rows<-c("ca","cb","cc","cd")
>  dimnames(a)<-list(rows,col)
> a                                ##        matrix
>   #-----------------------------------------------------------------------------------
>   #      ra rb rc rd re
> #  ca  3 15 27 39  9
> #  cb  6 18 30 42  8
> #  cc  9 21 33 45  7
> #  cd 12 24 36 10  6
>   ------------------------------------------------------------------------------------
>
> t<-list()                        ## clusters of the matrix
>   s<-list()
>   r<-c(1:3)
>    for(i in 1:3)
> { p<-seq(r[i],4,3)
>  s[[i]]<-print(p)
> t[[i]]<-a[s[[i]],,drop=FALSE]
>  }
> print(t)
>   ----------------------------------------------------------------------
>   ##[[1]]
>    ra rb rc rd re
> ca  3 15 27 39  9
> cd 12 24 36 10  6
>   [[2]]
>    ra rb rc rd re
> cb  6 18 30 42  8
>   [[3]]
>    ra rb rc rd re
> cc  9 21 33 45  7
> ----------------------------------------------------------------------------------------------------
>
>
>   ##now if i want to extract the row names i can do it manually giving the values like
>
>   rowc <- list(c(rownames(t[[1]])), c(rownames(t[[2]])), rownames(t[[3]]))
>
>
>   but i like to do using for loop or other loops...could you give me some suggestion..i´ve tried like this..but it is not working....
>
>   rowc<-list(for(i in 1:3){p<-c();k<-rownames(t[[i]]);p[[i]]<-print(k)})
>
>   ## here I´m getting only the final  rowname t[[3]]..other two values are missing..how could i do this to store all the values...........

Please do not send HTML mail.

You are looking for:

rowc <- lapply(t, rownames)

A corresponding loop (which you should not use) would be:

rowc <- vector(mode = "list", length = length(t))
for(i in seq(along = t))
rowc[[i]] <- rownames(t[[i]])

BTW: t is a function in R, it is not very nice to use names twice ...

Uwe Ligges

>   thank you...
>
>   with regards,
>   eric.
>
>
> ---------------------------------
>
>
> 	[[alternative HTML version deleted]]
>
>
>
> ------------------------------------------------------------------------
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help