[R] Number of replications of a term
Laetitia Marisa
Laetitia.Marisa at cgm.cnrs-gif.fr
Tue Jan 24 18:05:48 CET 2006
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
}
More information about the R-help
mailing list