[R] Help on efficiency/vectorization
Moshe Olshansky
m_olshansky at yahoo.com
Thu Aug 27 08:36:22 CEST 2009
You can do
for (i in 1:ncol(x)) {names <- rownames(x)[which(x[,i]==1)];eval(parse(text=paste("V",i,".ind<-names",sep="")));}
--- On Thu, 27/8/09, Steven Kang <stochastickang at gmail.com> wrote:
> From: Steven Kang <stochastickang at gmail.com>
> Subject: [R] Help on efficiency/vectorization
> To: r-help at r-project.org
> Received: Thursday, 27 August, 2009, 4:13 PM
> 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