[prev in list] [next in list] [prev in thread] [next in thread]
List: r-help
Subject: Re: [R] Understanding classes in R
From: David Winsemius <dwinsemius () comcast ! net>
Date: 2013-09-30 7:19:20
Message-ID: 7B7EB799-57C9-407B-9BF7-57C8D305F6D1 () comcast ! net
[Download RAW message or body]
On Sep 29, 2013, at 5:28 PM, Ista Zahn wrote:
> Hi JD,
>
> On Sun, Sep 29, 2013 at 5:48 PM, john doe <anon.r.user@gmail.com> 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).
>
> Yes, but the class is not the type:
>
>> x <- 1:10
>> class(x)
> [1] "integer"
>> typeof(x)
> [1] "integer"
>> class(x) <- "foo"
>> class(x)
> [1] "foo"
>> typeof(x)
> [1] "integer"
>
> If so,
>> where can I see a list, and how does "numeric" fit into this system?
>
> A list of what? For a list of storage modes see ?typof. For classes
> there cannot be any such list, as you can create a new class as easily
> as
>
> class(x) <- "aNewClassThatNeverExistedBefore"
>
>
>>
>>> 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". How is "integer"
>> different than "numeric"? Is there a "vector" or "array" class in R? If
>> so, why is this not that?
>
> See http://cran.r-project.org/doc/manuals/r-release/R-intro.html#Objects
> (And while you are there it wouldn't be a bad idea to read the rest of
> manual as well).
>
>>
>>> class(x[1])
>> [1] "integer"
>>
>> This is even more confusing to me. Because x[1] is 1. And the class of
>> that was "numeric" in my first example. Why is it integer now?
>
> Presumably because '[' turned it into one. help("[") says that the
> return value is "typically an array-like R object of a similar class
> as ‘x’."
If you just type:
x <- 1 # the mode is "double" and the class is "numeric"
If you type:
x <- 1L # mode and class are "integer"
x[1] does not coerce an "integer" to "numeric"
--
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.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic