Re: [R] 'Date' elements within a matrix

From: David Winsemius <dwinsemius_at_comcast.net>
Date: Sun, 13 Mar 2011 12:46:24 -0400

On Mar 13, 2011, at 11:46 AM, Bogaso Christofer wrote:

> Thanks everyone for clarifying my query. However I was wondering why
> that
> Date character is not preserved within a matrix? Why R forcefully
> changes
> that to numeric? I am especially concerned because as per the
> definition of
> the matrix, each element needs to be of same class.

THe help page for `matrix` says that there is coercion with `as.vector` and the help page for `as.vector` describes further specific defaults for that operation, so I think your mental model of what matrix requires may need refinement from a simplistic notion of "matrix needs same class".

My reading could be wrong but it appears any vector of a non-atomic class is going to be coerced to an atomic class (as well as having any names stripped off).

-- 
David.


> Is there any other
> example other than Date class which R forcefully changes to some
> simpler
> class if it placed within a matrix?
>
> Thanks and regards,
>
>
> -----Original Message-----
> From: Gabor Grothendieck [mailto:ggrothendieck_at_gmail.com]
> Sent: 12 March 2011 02:46
> To: Bogaso Christofer
> Cc: r-help_at_r-project.org
> Subject: Re: [R] 'Date' elements within a matrix
>
> On Fri, Mar 11, 2011 at 4:15 PM, Bogaso Christofer
> <bogaso.christofer_at_gmail.com> wrote:
>> Dear all, when I put date objects (class of 'Date') in a matrix it
>> becomes
>> numeric:
>>
>>> dat <- matrix(seq(as.Date("2011-01-01"), as.Date("2011-01-09"),
>>> by="1
>> day"), 3)
>>
>>> dat
>>
>> [,1] [,2] [,3]
>>
>> [1,] 14975 14978 14981
>>
>> [2,] 14976 14979 14982
>>
>> [3,] 14977 14980 14983
>>
>>> class(dat[1,1])
>>
>> [1] "numeric"
>>
>>
>>
>> As it could not preserve the 'Date' characteristics after putting my
>> Date observations, I find it difficult to carry forward further
>> calculation with Dates. Can somebody help me on how to preserve the
>> Data properties while storing them within some matrix?
>
> If its important to you to store them in a matrix (as opposed to a
> data
> frame) then try storing them in a matrix of lists:
>
>> dd <- seq(as.Date("2011-01-01"), as.Date("2011-01-09"), by = "day") m
>> <- matrix(as.list(dd), 3) m[[1,1]]
> [1] "2011-01-01"
>
>
> --
> Statistics & Software Consulting
> GKX Group, GKX Associates Inc.
> tel: 1-877-GKX-GROUP
> email: ggrothendieck at gmail.com
>
> ______________________________________________
> 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.
David Winsemius, MD West Hartford, CT ______________________________________________ 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.
Received on Sun 13 Mar 2011 - 16:52:39 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Sun 13 Mar 2011 - 17:00:21 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive