我有一个如下生成的矩阵:
set.seed(999)
mat.a = matrix(round(rnorm(24,4,9)),3,8)
mat.a
mat.a
看起来像这样:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 6 -13 -6 12 -8 12 10
[2,] -8 2 -7 16 6 5 -15 1
[3,] 11 -1 -5 5 13 5 -7 7
现在,假设我想根据一些组索引mat.a
对每一行从最小到最大进行排序。如您所见,有 8 列,对应于
grp.ids = as.factor(c(1,1,1,2,2,2,3,3))
即,前 3 列用于第 1 组,接下来的 3 列用于第 2 组,最后两列用于第 3 组。所需的是在每个组内进行排序,以便结果是一个矩阵(调用它mat.b
)像这样:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] -13 1 6 -8 -6 12 10 12
[2,] -8 -7 2 5 6 16 -15 1
[3,] -5 -1 11 5 5 13 -7 7
mat.a
有没有办法通过传递和grp.ids
获取排序矩阵来有效地编写函数mat.b
?在 ? 中应用一些功能plyr
?非常感谢!