So this is perfectly consistent then: > A <- NA > B <- NA+NA > B [1] NA > A [1] NA > is.numeric (A) [1] FALSE > is.numeric (B) [1] TRUE >
And the test based on value rather than type would be: > !is.na(A) [1] FALSE > !is.na(B) [1] FALSE On 4/4/06, Antonio, Fabio Di Narzo <[EMAIL PROTECTED]> wrote: > > 2006/4/4, [EMAIL PROTECTED] <[EMAIL PROTECTED]>: > > > Full_Name: c fillekes > > Version: Version 2.2.1 (2005-12-20 r36812) > > OS: Gentoo Linux kernel 2.6.12 > > Submission from: (NULL) (129.116.71.233) > > > > > > > > > > "Not Available" is of course not a numeric: > > R > > > > > is.numeric (NA) > > [1] FALSE > > > In the help you can read: > " > 'NA' is a logical constant of length 1 which contains a missing > value indicator. 'NA' can be freely coerced to any other vector > type except raw. > " > And in fact: > > > storage.mode(NA) > [1] "logical" > > storage.mode(NA+0) > [1] "double" > > storage.mode(as.numeric(NA)) > [1] "double" > > storage.mode(as.character(NA)) > [1] "character" > > So in > NA+NA > the logical is automatically coerced to a numerical value, and > is.numericreturns TRUE, as expected. > > > But for some reason, all arithmetic operations on NA's are > > in fact numeric, even if it's with other NA's. > > > > > > > is.numeric (NA+NA) > > [1] TRUE > > > is.numeric (NA^2) > > [1] TRUE > > > is.numeric (NA-NA) > > [1] TRUE > > > is.numeric (NA*NA) > > [1] TRUE > > > is.numeric (NA/NA) > > [1] TRUE > > > > > > > This is not the expected thing. > > > I think this is the expected thing. > > ______________________________________________ > > R-devel@r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-devel > > > > > Antonio, Fabio Di Narzo. > [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel