Skip to content

sorting a matrix by the column

3 messages · Mark Leeds, Gabor Grothendieck, jim holtman

#
this is a bad question but I can't figure it out and i've tried. if i 
sort the 2 column
matrix , temp1, by the first column, then things work as expected. But,
if I sort the 1 column matrix, temp2, then it gets turned coerced to a 
vector. I realize that I
need to use drop=FALSE but i've put it in a few different places with no 
success. Thanks.

temp1 <- matrix(rnorm(10),nc=2,nrow=5)
rownames(temp1) <- c("a","b","c","d","e")
print(temp2)
temp1 <- temp1[order(temp1[,1]),]
print(temp1)

temp2 <- matrix(rnorm(10),nc=1,nrow=5)
rownames(temp2) <- c("a","b","c","d","e","f","g","h","i")
print(temp2)
temp2 <- temp2[order(temp2[,1]),]   # PROBLEM IS HERE
print(temp2)
#
This is what I get:
Error in dimnames(x) <- dn :
  length of 'dimnames' [1] not equal to array extent
[1] "R version 2.8.1 Patched (2008-12-26 r47350)"
On Wed, Feb 11, 2009 at 1:18 AM, <markleeds at verizon.net> wrote:
#
Use 'drop=FALSE'
[,1]
a -0.5686687
b -0.1351786
c  1.1780870
d -1.5235668
e  0.5939462
f  0.3329504
g  1.0630998
h -0.3041839
i  0.3700188
j  0.2670988
[,1]
d -1.5235668
a -0.5686687
h -0.3041839
b -0.1351786
j  0.2670988
f  0.3329504
i  0.3700188
e  0.5939462
g  1.0630998
c  1.1780870

        
On Wed, Feb 11, 2009 at 1:18 AM, <markleeds at verizon.net> wrote: