From p.dalgaard@biostat.ku.dk  Wed May 12 10:27:17 1999
From: p.dalgaard@biostat.ku.dk (Peter Dalgaard BSA)
Date: 12 May 1999 11:27:17 +0200
Subject: matrix() can't handle NaN (PR#193)
In-Reply-To: Bill Simpson's message of "Wed, 12 May 1999 09:51:35 +0000 (GMT)"
References: <Pine.LNX.3.96.990512092041.9531A-100000@cbe207.gcal.ac.uk>
Message-ID: <x21zgmd4ei.fsf@blueberry.kubism.ku.dk>

Bill Simpson <wsimpson@gcal.ac.uk> writes:

> > So just which one do
> > you mean?  And what are you going to achieve by having essentially a
> > second NA, except to blur the real purposes of NaNs?
>
> Well to me NA means missing value, and it is abuse of NA to use it to
> represent things like 0/0.

And actually the logic is a bit warped:

> NA+NaN     
[1] NA
> NaN+NA
[1] NA
> NaN+NaN
[1] NaN
> is.nan(NaN)
[1] TRUE
> is.nan(NA)
[1] FALSE
> is.na(NaN)
[1] TRUE
 
> The purpose of having NaN to me:
> I am allowed to get an NaN as a result of some operation in R. Let's say I
> then save that in a file, then I read the file in again using read.table.
> In the process of saving and reading it in I lose the NaN. I don't like
> that. It doesn't seem consistent. If the NaN is to be changed, I would
> like to do the changing explicitly myself, so I know what happened to it.
> 
> I would also include Inf and -Inf here. These are allowed outputs from R
> operations, so why can't they be read in by read.table? So I am proposing
> that allowable IEEE entities Inf, -Inf, NaN be read in by read.table as
> themselves (not as character strings).

We do allow them as constants in the language itself, so I suppose we
could do it in read.table as well - this really means inside
as.double, I suppose. The prototype does this:

Splus> is.nan(as.double("NaN"))
[1] T

> PS: I remember reading on this list about complex numbers in R. That
> brings in a conflict with IEEE (doesn't it?), because in IEEE,
> sqrt(negative number)->NaN.
> But that is not a NaN if you allow complex numbers (I would think).
> > sqrt(-1)
> Warning: NaNs produced in function "sqrt"
> [1] NaN
> 
> Is there a need for an "I" symbol in R?

Nope:

> sqrt(-1+0i)
[1] 0+1i

or, equivalently,

> sqrt(as.complex(-1))
[1] 0+1i

-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk)             FAX: (+45) 35327907
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._


matrix() can't handle NaN (PR#193)
Peter Dalgaard BSA