Hello again,

On Jan 17, 2010, at 5:42 PM, Rolf Turner wrote:



Notice that your output is 6 x 5 whereas your input is 5 x 6.
Now *what* did you do wrong?


Whoa!   Let's try that again, but with a better example.

> X = matrix(as.character(1:6),2,3)
> X
     [,1] [,2] [,3]
[1,] "1"  "3"  "5"
[2,] "2"  "4"  "6"
> apply(X,1,as.numeric)
     [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6

Ouch! Hmmm. From the "Value" section of the apply docs... "If each call to FUN returns a vector of length n, then apply returns an array of dimension c(n, dim(X)[MARGIN]) if n > 1." Since I set MARGIN to 1, then I was operating on rows where n is 3.

> c(n, dim(X)[MARGIN])
[1] 3 2

How about that; it does just what it says it will do. I have no idea why it does that, but the remedy seems to be ...

> apply(X, c(1,2), as.numeric)
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

... or even ...

> apply(X, 2, as.numeric)
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

Perhaps someone could shed light on why the rows become columns.

Cheers,
Ben


        cheers,

                Rolf Turner

On 18/01/2010, at 11:33 AM, Ben Tupper wrote:

Hi,

I find the following works in R 2.10.1 on Mac OSX.

m = matrix(rep("3", 30), 5,6)
m
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,] "3"  "3"  "3"  "3"  "3"  "3"
[2,] "3"  "3"  "3"  "3"  "3"  "3"
[3,] "3"  "3"  "3"  "3"  "3"  "3"
[4,] "3"  "3"  "3"  "3"  "3"  "3"
[5,] "3"  "3"  "3"  "3"  "3"  "3"
apply(m, 1,as.numeric)
     [,1] [,2] [,3] [,4] [,5]
[1,]    3    3    3    3    3
[2,]    3    3    3    3    3
[3,]    3    3    3    3    3
[4,]    3    3    3    3    3
[5,]    3    3    3    3    3
[6,]    3    3    3    3    3

Cheers,
Ben
On Jan 17, 2010, at 5:17 PM, ivan popivanov wrote:


Hello,



This turned out to be surprisingly hard for me:



Let's say I have



mm = matrix(as.character(seq(1,30, 1)), nrow=3); mm

   [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] "1"  "4"  "7"  "10" "13" "16" "19" "22" "25" "28"
[2,] "2"  "5"  "8"  "11" "14" "17" "20" "23" "26" "29"
[3,] "3"  "6"  "9"  "12" "15" "18" "21" "24" "27" "30"



which is a matrix of strings, I'd like to convert this to a matrix
of the corresponding numbers:



nn = matrix(seq(1,30, 1), nrow=3), nn

   [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    1    4    7   10   13   16   19   22   25    28
[2,]    2    5    8   11   14   17   20   23   26    29
[3,]    3    6    9   12   15   18   21   24   27    30



I can convert each dimension using sapply(mm[,1], as.numeric), but
how to convert the full matrix?!



In fact I hit this problem because I got a data.frame consisting of
factors (numerics represented as strings) when I queried a database.
So if you can advise how to convert this data.frame to a data.frame
with proper numerics - that would be even better. The problem is
that my numerics are doubles and the data.matrix function seems to
cast factors to ints.



Thanks in advance,

Ivan


                                        
_________________________________________________________________


        [[alternative HTML version deleted]]

______________________________________________
R-help@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.


Cheers,
Ben

______________________________________________
R-help@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.


######################################################################
Attention:This e-mail message is privileged and confidential. If you are not theintended recipient please delete the message and notify the sender.Any views or opinions presented are solely those of the author.

This e-mail has been scanned and cleared by MailMarshalwww.marshalsoftware.com
######################################################################


Cheers,
Ben

______________________________________________
R-help@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.

Reply via email to