Объединение строк в большой матрице по имени строки

Я хотел бы агрегировать строки матрицы, добавляя значения в строках с одинаковым именем строки. Мой текущий подход заключается в следующем:

> M
  a b c d
1 1 1 2 0
1 2 3 4 2
2 3 0 1 2
3 4 2 5 2
> index <- as.numeric(rownames(M))
> M <- cbind(M,index)
> Dfmat <- data.frame(M)
> Dfmat <- aggregate(. ~ index, data = Dfmat, sum)
> M <- as.matrix(Dfmat)
> rownames(M) <- M[,"index"]
> M <- subset(M, select= -index)
> M
   a b c d
 1 3 4 6 2
 2 3 0 1 2
 3 4 2 5 2

Проблема этой оценки в том, что мне нужно применить ее к ряду очень больших матриц (до 1.000 строк и 30.000 столбцов). В этих случаях время вычислений очень велико (та же проблема при использовании ddply). Есть ли более эффективное решение? Помогает ли то, что исходные входные матрицы - это DocumentTermMatrix из пакета tm? Насколько мне известно, они хранятся в разреженном матричном формате.

7
задан Christian 15 November 2011 в 16:54
поделиться