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

From: Uwe Ligges <ligges_at_statistik.uni-dortmund.de>
Date: Sun 11 Dec 2005 - 04:37:29 EST

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..ive 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 Im getting only the final rowname t[[3]]..other two values are missing..how could i do this to store all the values...........

Please teach your mail software to wrap lines. 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@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Sun Dec 11 04:51:19 2005

This archive was generated by hypermail 2.1.8 : Sun 11 Dec 2005 - 09:29:32 EST