[Rd] Undocumented bahavior of as.integer() (PR#2430)

maechler@stat.math.ethz.ch maechler@stat.math.ethz.ch
Wed Jan 8 11:51:03 2003


>>>>> "PhGr" == Philippe Grosjean <phgrosjean@sciviews.org>
>>>>>     on Wed, 8 Jan 2003 11:24:40 +0100 (MET) writes:

    PhGr> as.integer() truncates doubles toward zero, as Splus
    PhGr> does (at least v. 6.1 under Windows does). Thus:

(fortunately this is not OS dependent!)

    >> look <- (10 * seq(14)) - 76
    >> 10 * (73.1 + look)
    PhGr>[1] 71 171  271  371  491  586  681  791  886  981 1101 1201 1301 1401
    >> as.integer(10 * (73.1 + look))
    PhGr>[1] 70 170  270  370  490  586  681  791  886  981 1101 1201 1301 1401

    PhGr> ... It is not documented in R! I propose appending the following to
    PhGr> as.integer.Rd:

I agree the doc should mention it.
I disagree with the warning section.
In R, our code really just uses something like

   int asInt(double x) { return x; }

which makes use of C's  "implicit casting".  
I know looked in Kernighan & Ritchie (2nd Ed.; {3rd Ed would be better})
and found (p.197)

   >>  "A6.3 Integer and Floating"
   >>  
   >>  When a value of floating type is converted to integral type,
   >>  the fractional part is discarded. ...................

Hence this is (fortunately!) part of the C standard.
But I really think any decent programming language would do it
like that (many would not allow implicit coercion though..).
That's the reason I think the warning is not necessary; I'd
rather mention it by the way.

    PhGr> \section{ WARNING }{ During coercion of doubles, real
    PhGr> numbers are not rounded but truncated (the closest
    PhGr> integer towards zero is returned).  Attributes are
    PhGr> deleted.}

    PhGr> And I suggest adding the previous exemple in the
    PhGr> corresponding section in as.integer.Rd. Moreover, the
    PhGr> subset operation [] uses as.integer() and
    PhGr> consequently, can suffer from the same syndrome. A
    PhGr> WARNING section in Extract.Rd would be welcome too.

"suffer" and "syndrome"  are not appropriate here IMHO.

Martin Maechler <maechler@stat.math.ethz.ch>	http://stat.ethz.ch/~maechler/
Seminar fuer Statistik, ETH-Zentrum  LEO C16	Leonhardstr. 27
ETH (Federal Inst. Technology)	8092 Zurich	SWITZERLAND
phone: x-41-1-632-3408		fax: ...-1228			<><