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:> temp2 <- matrix(rnorm(10),nc=1,nrow=5) > rownames(temp2) <- c("a","b","c","d","e","f","g","h","i")Error in dimnames(x) <- dn : length of 'dimnames' [1] not equal to array extent> R.version.string[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:> 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) > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >
Use 'drop=FALSE'> temp2 <- matrix(rnorm(10),nc=1) > rownames(temp2) <- c("a","b","c","d","e","f","g","h","i",'j') > print(temp2)[,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> temp2 <- temp2[order(temp2[,1]),,drop=FALSE] # PROBLEM IS HERE > print(temp2)[,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:> 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) > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >-- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve?