我用两个向量创建了一个矩阵
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
答案 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