首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按升序排序行值,而不影响R中的“零”

按升序排序行值,而不影响R中的“零”
EN

Stack Overflow用户
提问于 2020-10-15 03:33:06
回答 1查看 84关注 0票数 1

我有如下所示的矩阵

代码语言:javascript
复制
> m
       m-1     m-2     m-3     m-4
1  143.7622 136.5459 150.2471   0.0000
2  154.5759 157.7273   0.0000   0.0000
3  120.0844   0.0000   0.0000   0.0000
4  152.4461   0.0000   0.0000   0.0000
5    0.0000   0.0000   0.0000   0.0000
6  138.0643 123.9677 137.8788 152.7869
7  137.8872   0.0000   0.0000   0.0000
8  154.3439 140.1487 151.1158 154.8959
9  136.0983 139.3603 123.1054   0.0000
10 142.1830   0.0000   0.0000   0.0000

我需要在不影响矩阵中零点位置的情况下对行进行排序。例如,按升序排序后,第一行应类似于

代码语言:javascript
复制
     m-1     m-2     m-3      m-4
136.5459 143.7622 150.2471   0.0000

有人能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-15 03:37:55

您可以按行方式使用apply,忽略0,只对非0元素进行排序。

代码语言:javascript
复制
t(apply(m, 1, function(x) {x[x != 0] <- sort(x[x != 0]);x}))

#        m-1      m-2      m-3      m-4
#1  136.5459 143.7622 150.2471   0.0000
#2  154.5759 157.7273   0.0000   0.0000
#3  120.0844   0.0000   0.0000   0.0000
#4  152.4461   0.0000   0.0000   0.0000
#5    0.0000   0.0000   0.0000   0.0000
#6  123.9677 137.8788 138.0643 152.7869
#7  137.8872   0.0000   0.0000   0.0000
#8  140.1487 151.1158 154.3439 154.8959
#9  123.1054 136.0983 139.3603   0.0000
#10 142.1830   0.0000   0.0000   0.0000

数据

代码语言:javascript
复制
m <- structure(c(143.7622, 154.5759, 120.0844, 152.4461, 0, 138.0643, 
137.8872, 154.3439, 136.0983, 142.183, 136.5459, 157.7273, 0, 
0, 0, 123.9677, 0, 140.1487, 139.3603, 0, 150.2471, 0, 0, 0, 
0, 137.8788, 0, 151.1158, 123.1054, 0, 0, 0, 0, 0, 0, 152.7869, 
0, 154.8959, 0, 0), .Dim = c(10L, 4L), .Dimnames = list(c("1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10"), c("m-1", "m-2", 
"m-3", "m-4")))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64364474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档