Phil,

    Thanks!  I am not sure why min & max sometimes work & other times don't
work.  In fact, running the script as you had it did work for me.  For
arrays that I had, it wasn't working and still isn't.  For the moment, I
won't worry about it.  It seems maybe it is a hidden bug somewhere (or I am
making an error), instead of just a simple feature to add.
    Regarding switching back to POSIXct, I wasn't aware of that method to
switch back.  That will save a big headache, and I'm glad I asked!!

    As long as you have so many great ideas, do you know how to handle times
/ dates when using "apply"?  When I use "apply", it forces the times into
characters.  E.g.:

tmp:
            Col A             Col B
1  2010-12-14 00:47:25 2010-12-14 20:25:40
2  2010-12-14 13:03:04 2010-12-14 20:25:45
3  2010-12-14 13:13:06 2010-12-14 20:25:41
4  2010-12-11 16:33:59 2010-12-14 20:25:41
5  2010-12-14 07:32:50 2010-12-14 20:25:41
6  2010-12-14 07:36:21 2010-12-14 20:25:45
7  2010-10-11 09:31:37 2010-12-01 14:21:42
8  2010-09-25 19:09:34 2010-09-25 21:10:50
9  2010-12-14 17:53:25 2010-12-14 20:33:49
10 2010-09-30 16:43:40 2010-12-01 15:36:07

    If I perform:

   - sapply(tmp, class) or lapply(tmp, class)

    I get:
[1,] "POSIXt"    "POSIXt"
[2,] "POSIXct"   "POSIXct"

    But if I perform:

   - apply(tmp, 1, class)

    I get:
 [1] "character" "character" "character" "character" "character" "character"
 [7] "character" "character" "character" "character"

    So I cannot perform any operations on times by row, unless I touch the
dreaded "for loop".  Or unless there is a secret I do not know...

                                                              Thanks!
                                                                   Mike



"Telescopes and bathyscaphes and sonar probes of Scottish lakes,
Tacoma Narrows bridge collapse explained with abstract phase-space maps,
Some x-ray slides, a music score, Minard's Napoleanic war:
The most exciting frontier is charting what's already here."
  -- xkcd

--
Help protect Wikipedia. Donate now:
http://wikimediafoundation.org/wiki/Support_Wikipedia/en


On Tue, Feb 8, 2011 at 12:31 PM, Phil Spector <spector@stat.berkeley.edu>wrote:

> Mike -
>   In what sense do min and max not work?
>
>  tm = as.POSIXct(c("2010-12-14 20:25:40","2010-12-10 08:15:20","2010-10-05
>> 05:12:10"))
>> min(tm)
>>
> [1] "2010-10-05 05:12:10 PDT"
>
>> max(tm)
>>
> [1] "2010-12-14 20:25:40 PST"
>
> When a POSIX time becomes numeric, try something like this:
>
>  untm = as.numeric(tm)
>> untm
>>
> [1] 1292387140 1291997720 1286280730
>
>> class(untm) = 'POSIXct'
>> untm
>>
> [1] "2010-12-14 20:25:40 PST" "2010-12-10 08:15:20 PST"
> [3] "2010-10-05 05:12:10 PDT"
>
> That is, just force the class back to POSIXct, don't use as.POSIXct.
>
> Hope this helps.
>                                        - Phil Spector
>                                         Statistical Computing Facility
>                                         Department of Statistics
>                                         UC Berkeley
>                                         spector@stat.berkeley.edu
>
>
>
> On Tue, 8 Feb 2011, Mike Williamson wrote:
>
>  Hello,
>>
>>   This is mostly to developers, but in case I missed something in my
>> literature search, I am sending this to the broader audience.
>>
>>
>>  - Are there any plans in the works to make "time" classes a bit more
>>  friendly to the rest of the "R" world?  I am not suggesting to allow for
>>  fancy functions to manipulate times, per se, or to figure out how to
>>  properly "add" times or anything complicated.  Just some fixes to make it
>>  easier to work with the "time" classes.  Here is a sampling of some
>> strange
>>  bugs with the time classes that, to my knowledge, don't exist with any
>> other
>>  core classes:
>>     1. you cannot "unlist" a time without losing the class.  E.g., if you
>>
>>     unlist "2010-12-14 20:25:40" (POSIXct), you get "1292387141", at
>> least on my
>>     OS & with my time zone.  Regardless of the exact number, unlisting a
>> time
>>     class converts it to a numeric.
>>        - upon converting to a numeric, it seems there is an underlying,
>>        assumed origin of "1970-01-01 00:00:00".  However, this same
>> assumption does
>>        not underlie the conversion *back* to a POSIX time, e.g., through
>>        as.POSIXct() function.  Therefore, whenever a time is
>> "accidentally"
>>        converted to a numeric, I have to force it back to a time through
>>        as.POSIXct(), *providing my own details* as to the origin.  There
>>        is no easy way to find the underlying origin.  This makes me
>> nervous for any
>>        persistent functions I create.  If the underlying origin ever
>> changes, then
>>        all this code will be inaccurate.  Maybe the origin will
>> never change, but
>>        regardless it makes more sense to allow for the same underlying
>> origin
>>        default for "as.POSIXct" that is used when unlisting, or
>> similar activities
>>        that force the time into a numeric.
>>        2. you cannot perform functions that otherwise seem trivial, such
>>
>>     as a "max" or "min".  I understand why, for instance, adding is
>> hard.  But
>>     what about max or min?  Greater than or less than are possible, as is
>>     order().  I have my own simple scripts using these 2 functions
>> in order to
>>     create a "max" & "min" for times, but it would be nice to have
>> something
>>     vetted & official.
>>
>>   If others could chime in with any strange behaviors they've seen in
>> working with times, maybe we could get a critical mass of issues that are
>> worthy of an overhaul.
>>
>>                                         Thanks & Regards,
>>                                                   Mike
>>
>>
>> "Telescopes and bathyscaphes and sonar probes of Scottish lakes,
>> Tacoma Narrows bridge collapse explained with abstract phase-space maps,
>> Some x-ray slides, a music score, Minard's Napoleanic war:
>> The most exciting frontier is charting what's already here."
>>  -- xkcd
>>
>> --
>> Help protect Wikipedia. Donate now:
>> http://wikimediafoundation.org/wiki/Support_Wikipedia/en
>>
>>        [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> 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.
>>
>>

	[[alternative HTML version deleted]]

