[R] Number of replications of a term

From: Laetitia Marisa <Laetitia.Marisa_at_cgm.cnrs-gif.fr>
Date: Wed 25 Jan 2006 - 04:05:48 EST


Hello,

Is there a simple and fast function that returns a vector of the number of replications for each object of a vector ? For example :
I have a vector of IDs :
ids <- c( "ID1", "ID2", "ID2", "ID3", "ID3","ID3", "ID5")

 I want the function returns the following vector where each term is the number of replicates for the given id :
c( 1, 2, 2, 3,3,3,1 )

Of course I have a vector of more than 40 000 ID and the function I wrote (it orders my data and checks on ID:Name of the data if the next term is the same as the previous one (see below) ) is really slow (30minutes for 44290 terms). But I don't have time by now to write a C function.
Thanks a lot for your help,

Laetitia.

Here is the function I have written maybe I have done something not optimized :

repVector <- function(obj){

# order IDName

    ord <- gif.indexByIDName(obj)
    ordobj <- obj[ord,]

    nspots <- nrow(obj)
# vector of spot replicates number
    spotrep <- rep(NA, nspots )    

# function to get ID:Name for a given spot
    spotidname <- function(ind){

            paste(ordobj$genes[ind, c("ID","Name") ], collapse=":")     }

    spot <- 1

    while( spot < nspots ){

        i<-1
        while( spotidname(spot) == spotidname(spot + i) ){            
       
            i <- i + 1
        }
       
        spotrep[spot : (spot + i-1)] <- i
        spot <- spot + i
        #cat("spot : ",spot,"\n")   
    }       
   

    obj$genes$spotrep <- spotrep[order(ord)]

    obj                

}



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 Wed Jan 25 04:29:23 2006

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:42:10 EST