[R] how to judge a virable is a integer?

William Dunlap wdunlap at tibco.com
Sat Oct 18 17:52:15 CEST 2014


It sounds like you want an 'is.integral' function to tell if a
number acts like a mathematical integer, as opposed to
'is.integer', which tells if a number is stored as a 32-bit
computer integer.  The test will depend on what properties
of mathematical integers you are most interested in.

   is.integral <- function (x)  (floor(x) == x) & (abs(x) + 1 > abs(x))
will return TRUE if x has no fractional part and the number's
putative successor (predecessor if negative) is different than
the number.  That latter test is equivalent (roughly) to log2(abs(x))<53 and
comes into play when you run out of bits in the mantissa of
a double precision number.  (One might want it to return NA in
that case, but I think FALSE works better.)


Bill Dunlap
TIBCO Software
wdunlap tibco.com


On Sat, Oct 18, 2014 at 3:41 AM, PO SU <rhelpmaillist at 163.com> wrote:
>
>
> Dear usRers,
>    I want to judge virable is or not a integer?
>   e.g.  is.integer(1)  FALSE   because it is a numeric, but i want it's true.
> as.integer may not be used. because i don't know a is 1 or 1.1.
>
>
>
>
>
> --
>
> PO SU
> mail: desolator88 at 163.com
> Majored in Statistics from SJTU
> ______________________________________________
> R-help at 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.



More information about the R-help mailing list