Как я могу заказать столбец матрицы? - PullRequest
1 голос
/ 17 марта 2019

Я создал матрицу из двух векторов

x<-c(1,118,3,220)
y<-c("A","B","C","D")
z<-c(x,y)
m<-matrix(z,ncol=2)

Теперь я хочу заказать вторую строку, но она не работает должным образом.Я пытался:

m[order(m[,2]),]

Порядок должен быть 1,3,118,220, но он показывает 1,118,220,3

1 Ответ

1 голос
/ 17 марта 2019

Матрица может содержать только один класс, который в этом случае будет символьным, поскольку у вас есть "A","B","C","D".

Так что, если вы все еще хотите упорядочить строки в матрице, вам нужно поместить первый столбец в поднабор, преобразовать его в числовой, использовать order, а затем использовать их для переупорядочения строк.

m[order(as.numeric(m[, 1])), ]

#    [,1]  [,2]
#[1,] "1"   "A" 
#[2,] "3"   "C" 
#[3,] "118" "B" 
#[4,] "220" "D" 

Поскольку у вас есть данные со смешанными типами данных, почему бы не хранить их вместо данных?

x<-c(1,118,3,220)
y<-c("A","B","C","D")
df <- data.frame(x,y)
df[order(df[,1]),]

#    x y
#1   1 A
#3   3 C
#2 118 B
#4 220 D
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...