我在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))]
但是给出的错误是参数不是矢量。
任何帮助?
答案 0 :(得分:1)
我不确定我理解你的问题。一个容易重现的例子肯定会有所帮助。
在主题中,您说要对行进行排序,但考虑到您提供的数据,您似乎想要对列进行排序?
test_fixer2 <- test_fixer[,c(4:9,1:3)]
以上代码将根据您的规范更改列。
答案 1 :(得分:1)
我会将矩阵分成两部分:M1
只包含&#34; M
&#34;列和M2
只有&#34; H
&#34;列。之后,可以使用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