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"