Извините, если это покажется тривиальным, но после некоторого поиска в Интернете я не смог найти решение.R: Есть ли простой способ сделать работу ave() для матриц?
У меня есть матрица и фактор-фактор, связанные с столбцами. Цель состоит в том, чтобы получить rowMeans для всех факторов отдельно и поддерживать исходную структуру матрицы. Вероятно, это было бы что-то вроде ave(), но работало бы над 2-мерными массивами.
Вот грубая демонстрация:
(mat <- rbind(1:5,6:10,11:15))
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
[3,] 11 12 13 14 15
groups <- c(1,1,1,2,2)
mat[,groups==1] <- rowMeans(mat[,groups==1]) # I am asking about this part
mat[,groups==2] <- rowMeans(mat[,groups==2]) # ...
mat
[,1] [,2] [,3] [,4] [,5]
[1,] 2 2 2 4.5 4.5
[2,] 7 7 7 9.5 9.5
[3,] 12 12 12 14.5 14.5
На практике эта матрица будет иметь миллионы строк (и меньше столбцов). Поэтому решения, которые работают по очереди, могут быть слишком медленными.
Я собираюсь написать свою собственную функцию, но это похоже на то, что может иметь легкое однострочное решение.
Я с радостью принимаю ваш ответ. Это правильно и дал мне несколько новых идей. Однако я чувствую, что в цикле было бы легче понять в этом случае :) На самом деле я думал, что у меня отсутствует базовая функция с одним словом. –