[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 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 at 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
More information about the R-help
mailing list