r - 如何根据数组中的不同列值对行进行排序,但在 R 中的矩阵中单独工作
问题描述
我有一个这样的数组:
> a
, , 1
[,1] [,2] [,3] [,4]
[1,] 3 5 7 5
[2,] 5 3 6 7
[3,] 6 9 8 4
, , 2
[,1] [,2] [,3] [,4]
[1,] 4 9 3 3
[2,] 6 4 6 5
[3,] 8 3 2 6
我想根据 [,3] 列中的递减值对行进行排序。输出应该是这样的:
> Output
, , 1
[,1] [,2] [,3] [,4]
[1,] 6 9 8 4
[2,] 3 5 7 5
[3,] 5 3 6 7
, , 2
[,1] [,2] [,3] [,4]
[1,] 6 4 6 5
[2,] 4 9 3 3
[3,] 8 3 2 6
我可以将order()
函数与矩阵一起使用,编写如下内容:m[order(m[,3],decreasing=T),]
而且我知道我应该使用apply()
函数,但我试图将两者结合起来,但它在我手中不起作用。我曾经在使用数组时遇到过这类问题,因此欢迎任何关于在哪里可以找到管理数组的好信息的提示。如果有任何帮助,我将不胜感激。
解决方案
我会使用一个好的旧for
循环来做到这一点。
xy <- array(c(3,5,6,5,3,9,7,6,8,5,7,4,4,6,8,9,4,3,3,6,2),c(3,4,2))
for (i in seq_len(dim(xy)[3])) {
myorder <- order(xy[,, i][, 3], decreasing = TRUE)
xy[,, i] <- xy[myorder, , i]
}
> xy
, , 1
[,1] [,2] [,3] [,4]
[1,] 6 9 8 4
[2,] 3 5 7 5
[3,] 5 3 6 7
, , 2
[,1] [,2] [,3] [,4]
[1,] 6 4 6 5
[2,] 4 9 3 3
[3,] 8 3 2 6
推荐阅读
- java - 使用分页从 redis 缓存中检索数据
- django - Daphne + Django Channels 在 Heroku 上给出错误 503
- java - Recyclerview中每个项目行的增量和减量值
- powerbi - Power BI 忽略货币值的四舍五入
- javascript - angular agora rtc 如何进行音频混合?
- powershell - 使用 OR 在条件内设置参数 | 电源外壳 5
- c - 在 C 中的数组初始化中使用 #define 宏有什么用?
- javascript - 如何从所述对象内的 onmove 事件设置对象的属性?
- r - 我无法安装或运行 mlr 包
- python - Python matplotlib:如何在 plt plot markerfacecolor 中包含自定义颜色列表