is.integer() is one of those functions with a name that can be confusing
-- it looks at the underlying storage type of its argument (e.g.,
integer, floating point, character, etc.) not at the value stored in the
argument.
So, the type of behavior you see is this:
> is.integer(1)
[1] FALSE
> is.integer(as.integer(1))
[1] TRUE
> is.integer(as.integer(1) * 1.0)
[1] FALSE
> is.integer(as.integer(NA))
[1] TRUE
>
Careful reading of ?is.integer does tell you this, but I wouldn't accuse
that help page of making such information blatantly obvious to new users
of R.
To test whether a value is an integer value, you can so something like this:
> is.wholenumber <- function(x, tolerance = .Machine$double.eps^0.5)
return(abs(x - round(x)) < tolerance)
> is.wholenumber(1)
[1] TRUE
> is.wholenumber(seq(1,5,by=0.5))
[1] TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE
>
The 'tolerance' part is to allow for minor deviations that might be due
to floating point representation issues, e.g., on my computer 1/49 * 49
does not result in a value that is exactly equal to 1:
> 1/49 * 49 - 1
[1] -1.110223e-16
> is.wholenumber(1/49 * 49)
[1] TRUE
> is.wholenumber(1/49 * 49, tol=0)
[1] FALSE
>
-- Tony Plate
[email protected] wrote:
Full_Name: Mauricio
Version: 2.9.0 (2009-04-17)
OS: i486-pc-linux-gnu
Submission from: (NULL) (193.205.203.3)
This is a very simple function that seems not to be working, according to the
definition given by '?is.integer'.
I checked in the Bug Tracking page at http://bugs.R-project.org/, but I didn't
find any related message.
The possible problem is:
is.integer(1)
[1] FALSE
and 1 is obviously an integer value.
I would really appreciate if you could clarify if this is really a bug or not.
Thanks in advance,
Mauricio
version
_
platform i486-pc-linux-gnu
arch i486
os linux-gnu
system i486, linux-gnu
status
major 2
minor 9.0
year 2009
month 04
day 17
svn rev 48333
language R
version.string R version 2.9.0 (2009-04-17)
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel