抱歉,如果这看起来微不足道,但在互联网上搜索了一段时间后,我无法找到解决方案。
我有一个矩阵和一个与列关联的因子向量。目标是分别获取所有因子的 rowMeans 并保持原始矩阵结构。所以可能它会像 ave() 但在二维数组上工作。
这是一个粗略的演示:
(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
在实践中,这个矩阵将有数百万行(和更少的列)。因此,逐行工作的解决方案可能太慢了。
我正在编写自己的函数,但这似乎有一个简单的单行解决方案。