Сортировка строк в матрице по r

У меня есть простая матрица в 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))]

но дает ошибку, что аргумент не вектор.

Любая помощь?

2 ответа

Я не уверен, что понимаю вашу проблему. Легко воспроизводимый пример наверняка поможет.

В теме вы говорите, что хотите сортировать строки, но, учитывая данные, которые вы предоставляете, кажется, что вы хотите отсортировать столбцы?

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

Приведенный выше код изменит столбцы в соответствии с вашей спецификацией.

Я бы разбил матрицу на две части: 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
Другие вопросы по тегам