如何订购矩阵的一列?

时间:2019-03-17 13:39:13

标签: r matrix

我用两个向量创建了一个矩阵

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 个答案:

答案 0 :(得分:1)

矩阵只能容纳一个类,在这种情况下,因为您有"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