[R] R internal data types
Prof Brian Ripley
ripley at stats.ox.ac.uk
Thu Jan 15 09:49:20 CET 2004
On Wed, 14 Jan 2004 Benjamin.STABLER at odot.state.or.us wrote:
> I am trying to figure out R data types and/or storage mode. For example:
[...]
> So it looks like R stores numbers as doubles unless the are converted to
> integers (long) with the as.integer() function or they are created with the
> : operator. If any of the numbers to a function are not type integer than
> the function returns type double. Is this the case? Thanks.
Nearly!
Non-complex `numbers' can have storage mode "double" or "integer".
Storage mode "integer" is the C `int' type and not the C `long' type, so
probably on all current R platforms doubles are stored in 8 bytes and
integers in 4.
The storage mode is largely under the user/programmer's control: you can
do
storage.mode(x) <- "double"
for example. The storage mode of the return value of a function depends
on how it was programmed, not on the types of its arguments, for example
> x <- seq(10)
> storage.mode(x)
[1] "integer"
Just a few base functions normally return integer results: you have
mentioned : and as.integer() and I have illustrated seq(). table() and
tabulate() are two others I know of, and factors are integer vectors with
particular attributes.
Current versions of S use integer storage mode much more widely, and it is
quite possible that in due course more functions in R will make use of it.
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-help
mailing list