【问题标题】:sorting rows in matrix in r在r中对矩阵中的行进行排序
【发布时间】:2015-09-24 19:26:10
【问题描述】:

我在 r 中有一个简单的矩阵,用 tapply 生成:

> test_fixer

H01       H02       H03       M01       M02       M03       M04       M05      
M06
N 0.2205882 0.0750000 0.4027778 0.2926829 0.3207547 0.3142857 0.1627907 0.2653061 0.2285714
Y 0.3181818 0.2222222 0.2280702 0.3278689 0.3400000 0.3714286 0.2589286 0.3135593 0.2604167

我想重新排序此矩阵,以便条形图中的条形按此顺序显示(即非字母顺序!):

M01,M02,M03,M04,M05,M06,H01,H02,H03

我尝试了很多方法,包括这样的:

test_fixer[order(names(test_fixer))]

但给出的参数不是向量的错误。

有什么帮助吗?

【问题讨论】:

    标签: r matrix tapply


    【解决方案1】:

    我不确定我是否理解您的问题。一个易于重现的示例肯定会有所帮助。

    在主题中,您说您想要对行进行排序,但考虑到您提供的数据,您似乎想要对列进行排序?

    test_fixer2 <- test_fixer[,c(4:9,1:3)]
    

    以上代码将根据您的规范更改列。

    【讨论】:

      【解决方案2】:

      我会将矩阵分成两部分:M1 仅包含“M”列,M2 仅包含“H”列。之后,可以使用cbind() 以所需的顺序重新组合子矩阵:

      M1 <- test_fixer[,grepl("M",colnames(test_fixer))]
      M2 <- test_fixer[,grepl("H",colnames(test_fixer))]
      cbind(M1,M2)
      #        M01       M02       M03       M04       M05       M06       H01       H02       H03
      #Y 0.2926829 0.3207547 0.3142857 0.1627907 0.2653061 0.2285714 0.2205882 0.0750000 0.4027778
      #N 0.3278689 0.3400000 0.3714286 0.2589286 0.3135593 0.2604167 0.3181818 0.2222222 0.2280702
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-09
        • 1970-01-01
        • 2018-05-14
        • 2012-12-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多