# matrix() can't handle NaN (PR#193)

**Bill Simpson
**
Bill Simpson <wsi@gcal.ac.uk>

*Tue, 11 May 1999 13:48:57 +0000 (GMT)*

On Tue, 11 May 1999, Kurt Hornik wrote:
>* >>>>> wsi writes:
*>*
*>* > Full_Name: Bill Simpson
*>* > Version: 0.64.1
*>* > OS: linux
*>* > Submission from: (NULL) (193.62.250.209)
*>*
*>*
*>* > Here is the data file:
*>* > x y z
*>* > 1 1 1
*>* > 1 2 2
*>* > 2 1 NaN
*>* > 2 2 4
*>*
*>* >> data<-read.table("~/junk.dat",header=TRUE)
*>*
*>* >> data
*>* > x y z
*>* > 1 1 1 1
*>* > 2 1 2 2
*>* > 3 2 1 NaN
*>* > 4 2 2 4
*>*
*I forgot these steps:
x<-unique(data$x)
y<-unique(data$y)
>* >> matrix(data$z,length(y),length(x))
*>* > [,1] [,2]
*>* > [1,] 1 4
*>* > [2,] 2 3
*>*
*>* > This is not the correct matrix. It seems that NaNs screw up matrix().
*>*
*>* Actually, data$z is a factor with one level NaN.
*Geez, I why is data$z a factor? That seems bizarre. It is supposed to be
the measured value (IV) at each combination of x and y. So what is the
right way to convert my original file?
I go through all this just to produce an image or contour or persp plot.
>* R> data$z
*>* [1] 1 2 NaN 4
*>* Levels: 1 2 4 NaN
*Weird! Is this because matrix() interprets NaN as a character string
instead of as an NaN (which is a "number", isn't it?)?
Why then isn't everything converted to a factor?
>* data$x
*[1] 1 1 2 2
>* data$y
*[1] 1 2 1 2
Also, why does matrix() work as I expect when the NaN in the file is
changed to a 0:
>* matrix(data$z,length(y),length(x))
* [,1] [,2]
[1,] 1 0
[2,] 2 4
It also works as I expect when the NaN is changed to an NA:
>* matrix(data$z,length(y),length(x))
* [,1] [,2]
[1,] 1 NA
[2,] 2 4
>* What you get is the codes of that, which I think is what you want.
*NOPE! I want a matrix:
1 NaN
2 4
Bill
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._