2015-04-21 6 views
-2

Я не могу найти способ сортировки матрицы по заданному заказу. У меня есть матрица n x m с именами, назначенными строкам и столбцам. У меня также есть два вектора, которые содержат мой заказ. Я хочу изменить порядок строк и столбцов в соответствии с двумя векторами, которые у меня есть.Сортировка строк и столбцов заданным вектором

Это мой код:

tab<-read.csv("matrix.csv",sep="\t",header=T,row.names=1,check.names=FALSE) 
mat<-as.matrix(tab) 

sorted содержит порядок столбцов Я хочу, sorted2 содержит порядок строк, я хочу.

mat имеет названия строк и столбцов, которые являются подмножеством sorted и sorted2

Я попытался order(), но я не могу понять, как указать столбец мудрый, ряд мудрых упорядоченности.

+0

Можете ли вы рассчитать свою переменную и уважать диаграмму проводки? Cheers :) –

+0

Я думаю, что я понял, это должен быть матовый [sorted2 [который (отсортирован2% в% rownames (mat))], отсортирован [который (отсортировано% в% colnames (mat))]] – NetWanderer

ответ

0
## Generate data 

set.seed(1) 

dat <- matrix(round(rnorm(4, 5), 2), 2) 

## Define order 

Vec1 <- c(1, 2) 

Vec2 <- c(2, 1) 

# Sort columns 

dat[order(Vec1),] 

    [,1] [,2] 
[1,] 4.37 4.16 
[2,] 5.18 6.60 

dat[order(Vec2),] 

    [,1] [,2] 
[1,] 5.18 6.60 
[2,] 4.37 4.16 

# Sort rows 

dat[,order(Vec1)] 

    [,1] [,2] 
[1,] 4.37 4.16 
[2,] 5.18 6.60 

dat[,order(Vec2)] 

    [,1] [,2] 
[1,] 4.16 4.37 
[2,] 6.60 5.18 
Смежные вопросы