これが些細なことのように思われる場合は申し訳ありませんが、インターネットをしばらく検索した後、解決策を見つけることができませんでした。
列に関連付けられた行列と因子ベクトルがあります。目標は、すべての因子の 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
実際には、この行列には何百万もの行 (そして列は少ない) があります。そのため、行ごとに機能するソリューションは遅すぎる可能性があります。
私は独自の関数を作成しようとしていますが、これは簡単な 1 行のソリューションがあるように思えます。