2015-09-24 41 views
0

我有在r中一个简单矩阵,其中tapply制备:排序行r中

> 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 

我想所以在barplot条出现的顺序(以重新排序此矩阵即,非字母!):

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

我已经尝试了一些东西,包括像这样:

test_fixer[order(names(test_fixer))] 

,但给人的错误,一个参数不是矢量。

任何帮助?

回答

1

我不知道我理解你的问题。一个容易重现的例子肯定会有所帮助。

在这个话题中,你说你想对行进行排序,但考虑到你提供的数据似乎你想对列进行排序?

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

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

+0

这样做了。谢谢,谢谢! – PSR

1

我会将矩阵分成两部分: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