On Sep 29, 2013, at 2:48 PM, john doe wrote: > I am having trouble understanding how classes in R work. Here is a small > reproducable example: > >> x=1 >> class(x) > [1] "numeric" > > OK. When a variable is a number, its class is "numeric". Does R have > multiple types for numbers, like C++ (eg integer, float, double). If so, > where can I see a list, and how does "numeric" fit into this system? > >> x=1:100 >> class(x) > [1] "integer" > > Wait - I thought that I assigned x to be an array/vector of 100 integers > (numerics). Why is the class not "array" or "vector".
Well, it is a vector. But it's not an array because it has no 'dim' attribute. The ":" operator returns integer sequences. ?":" > How is "integer" > different than "numeric"? Is there a "vector" or "array" class in R? Yes. ?array ?vector ?is.vector > If > so, why is this not that? > >> class(x[1]) > [1] "integer" > > This is even more confusing to me. Because x[1] is 1. Look at: x=1L class(x) > And the class of > that was "numeric" in my first example. Why is it integer now? > >> x=1.5:100.5 >> class(x) > [1] "numeric" > > Why is this class "numeric" when the class of 1:100 was integer? > Intergers are stored as 4-byte per item with a bit of overhead, which numerics or doubles are stored with 8 bytes: > object.size(1:100000) 400040 bytes > object.size( (1:100000)+.5 ) 800040 bytes As you can see it is very easy to corce an integer to numeric. > Thanks for your help. > > [[alternative HTML version deleted]] And do learn to post in plain text. > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. -- David Winsemius Alameda, CA, USA ______________________________________________ R-help@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.