[R] Help on efficiency/vectorization

Martin Maechler maechler at stat.math.ethz.ch
Thu Aug 27 14:33:57 CEST 2009


>>>>> "MO" == Moshe Olshansky <m_olshansky at yahoo.com>
>>>>>     on Wed, 26 Aug 2009 23:36:22 -0700 (PDT) writes:

    MO> You can do
    MO> for (i in 1:ncol(x)) {names <- rownames(x)[which(x[,i]==1)];eval(parse(text=paste("V",i,".ind<-names",sep="")));}

you can, but after   install.packages("fortunes")

  > require("fortunes")
  > fortune("parse")

  If the answer is parse() you should usually rethink the question.
     -- Thomas Lumley
	R-help (February 2005)


So please use one of the other answers given in the thread...


    MO> --- 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.
    >> 

    MO> ______________________________________________
    MO> R-help at r-project.org mailing list
    MO> https://stat.ethz.ch/mailman/listinfo/r-help
    MO> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
    MO> and provide commented, minimal, self-contained, reproducible code.




More information about the R-help mailing list