[R] Help on efficiency/vectorization

Gerrit Eichner Gerrit.Eichner at math.uni-giessen.de
Thu Aug 27 08:32:56 CEST 2009


Hi, Steven,

try

lapply( x, function( v) rownames(x)[ v == 1])

or

lapply( x, function( v, rn) rn[ v == 1], rn = rownames( x)))

which is faster.

  Regards  --  Gerrit

---------------------------------------------------------------------
AOR Dr. Gerrit Eichner             Mathematical Institute, Room 305 E
gerrit.eichner at math.uni-giessen.de   Justus-Liebig-University Giessen
Tel: +49-(0)641-99-32104          Arndtstr. 2, 35392 Giessen, Germany
Fax: +49-(0)641-99-32109              http://www.uni-giessen.de/~gcb7
---------------------------------------------------------------------

On Thu, 27 Aug 2009, Steven Kang wrote:

> Dear R users,
> 
> I am trying to extract the rownames of a data set for which each columns
> meet a certain criteria. (condition - elements of each column to be equal
> 1)
> 
> I have the correct result, however I am seeking for more efficient (desire
> vectorization) way in implementing such problem as it can get quite messy
> if
> there are hundreds of columns.
> 
> Arbitrary data set and codes are shown below for your reference:
> 
> x <- as.data.frame(matrix(round(runif(50),0),nrow=5))
> 
> rownames(x) <- letters[1:dim(x)[1]]
> 
> > x
>  V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
> a  0  1   1    1   0   0    0   0   1    0
> b  1  1   1    1   0   1    0   0   1    1
> c  0  1   1    0   0   0    0   0   0    1
> d  1  0   0    1   1   1    1   1   0    0
> e  1  0   0    0   0   1    1   0   1    0
> 
> V1.ind <- rownames(x)[x[,"V1"]==1]
> V2.ind <- rownames(x)[x[,"V2"]==1]
> V3.ind <- rownames(x)[x[,"V3"]==1]
> V4.ind <- rownames(x)[x[,"V4"]==1]
> :
> :
> V10.ind <- rownames(x)[x[,"V10"]==1]
> 
> > V1.ind
> [1] "b" "d" "e"
> > V2.ind
> [1] "a" "b" "c"
> > V3.ind
> [1] "a" "b" "c"
> :
> :
> > V10.ind
> [1] "b" "c"
> 
> 
> 
> Your expertise in resolving this issue would be highly appreciated.
> 
> 
> Steve
>
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>




More information about the R-help mailing list