I have a matrix with a large number of duplicates and would like to obtain a matrix with the unique rows and a frequency count to each unique row.
The example shown below solves this problem but is painfully slow.
rowsInTbl <- function(tbl,row){
  sum(apply(tbl, 1, function(x) all(x == row) ))
}
colFrequency <- function(tblall){
  tbl <- unique(tblall)
  results <- matrix(nrow = nrow(tbl),ncol=ncol(tbl)+1)
  results[,1:ncol(tbl)] <- as.matrix(tbl)
  dimnames(results) <- list(c(rownames(tbl)),c(colnames(tbl),"Frequency"))
  freq <- apply(tbl,1,function(x)rowsInTbl(tblall,x))
  results[,"Frequency"] <- freq
  return(results)
}
m <- matrix(c(1,2,3,4,3,4,1,2,3,4),ncol=2,byrow=T)
dimnames(m) <- list(letters[1:nrow(m)],c("c1","c2"))
print("Matrix")
print(m)
[1] "Matrix"
  c1 c2
a  1  2
b  3  4
c  3  4
d  1  2
e  3  4
print("Duplicate frequency table")
print(colFrequency(m))
[1] "Duplicate frequency table"
  c1 c2 Frequency
a  1  2         2
b  3  4         3
Here are the speed measurements of the answers of @Heroka and @m0h3n compared to my example. The matrix shown above was repeated 1000 times. Data.table clearly is the fastest solution.
[1] "Duplicate frequency table - my example"
   user  system elapsed 
   0.372   0.000   0.371 
[1] "Duplicate frequency table - data.table"
   user  system elapsed 
   0.008   0.000   0.008 
[1] "Duplicate frequency table - aggregate"
   user  system elapsed 
   0.092   0.000   0.089 
 
     
    