Examples for 'iotools::ctapply'


Fast tapply() replacement functions

Aliases: ctapply

Keywords: manip

### ** Examples

i = rnorm(4e6)
names(i) = as.integer(rnorm(1e6))
i = i[order(names(i))]
system.time(tapply(i, names(i), sum))
   user  system elapsed 
  0.141   0.075   0.266 
system.time(ctapply(i, names(i), sum))
   user  system elapsed 
  0.066   0.024   0.120 
## ctapply() also works on matrices (unlike tapply)
m=matrix(c("A","A","B","B","B","C","A","B","C","D","E","F","","X","X","Y","Y","Z"),,3)
ctapply(m, m[,1], identity, MERGE=list)
$A
     [,1] [,2] [,3]
[1,] "A"  "A"  ""  
[2,] "A"  "B"  "X" 

$B
     [,1] [,2] [,3]
[1,] "B"  "C"  "X" 
[2,] "B"  "D"  "Y" 
[3,] "B"  "E"  "Y" 

$C
     [,1] [,2] [,3]
[1,] "C"  "F"  "Z" 
ctapply(m, m[,1], identity, MERGE=rbind)
     [,1] [,2] [,3]
[1,] "A"  "A"  ""  
[2,] "A"  "B"  "X" 
[3,] "B"  "C"  "X" 
[4,] "B"  "D"  "Y" 
[5,] "B"  "E"  "Y" 
[6,] "C"  "F"  "Z" 
m2=m[,-1]
rownames(m2)=m[,1]
colnames(m2) = c("V1","V2")
ctapply(m2, rownames(m2), identity, MERGE=list)
$A
  V1  V2 
A "A" "" 
A "B" "X"

$B
  V1  V2 
B "C" "X"
B "D" "Y"
B "E" "Y"

$C
  V1  V2 
C "F" "Z"
ctapply(m2, rownames(m2), identity, MERGE=rbind)
  V1  V2 
A "A" "" 
A "B" "X"
B "C" "X"
B "D" "Y"
B "E" "Y"
C "F" "Z"

[Package iotools version 0.3-5 Index]