[Rd] c.POSIXct

Spencer Graves spencer.graves at structuremonitoring.com
Thu Aug 19 06:20:28 CEST 2010


        I'm with Gabor on this.  I naively would not expect c() to strip 
attributes generally, and I've been surprise more than once to find the 
time zone attribute stripped when I did not expect that.


       Might it make sense to add an argument like 
"keepAttributes=FALSE" to the "c" function?  Then people like Gabor and 
me would know that we would have to specify "keepAttributes = TRUE" if 
we wanted attributes to be kept.  Having this in the documentation would 
also help advertise the default behavior.  I would expect that 
attributes like "dim" and "dimnames" should always be dropped, 
regardless of the value of "keepAttributes".  With "keepAttributes = 
TRUE", "names" would be concatenated, and other attributes would be 
taken from the first argument with other attributes of later arguments 
ignored.


QUESTIONS:


       1.  With POSIXct, isn't the numeric part always in GMT, 
regardless of time zone?  Then the "tzone" attribute only affects the 
display?  Consider the following:


 > (z <- Sys.time())
[1] "2010-08-18 21:16:38 PDT"
 > as.numeric(z)
[1] 1282191399
 > attr(z, 'tzone') <- 'GMT'
 > as.numeric(z)
[1] 1282191399
 > z
[1] "2010-08-19 04:16:38 GMT"


       2.  How can one specify a time zone other than "GMT" and the 
default local time zone?

 > attr(z, 'tzone') <- Sys.timezone()
 > z
[1] "2010-08-19 04:16:38 GMT"
Warning message:
In as.POSIXlt.POSIXct(x, tz) : unknown timezone 'PDT'


       Thanks,
       Spencer Graves


On 8/18/2010 7:53 PM, Gabor Grothendieck wrote:
> On Wed, Aug 18, 2010 at 10:34 PM, Simon Urbanek
> <simon.urbanek at r-project.org>  wrote:
>> On Aug 18, 2010, at 6:23 PM, Gabor Grothendieck wrote:
>>
>>> No one answered this so I submitted it to the bugs system and there I
>>> got the response that it is documented behavior; however, whether its
>>> documented or not is hardly the point -- its undesirable that tzone is
>>> lost when using c.
>>>
>> That's one man's opinion - from docs
>>
>>   if you want to specify an object in a particular timezone but
>>    to be printed in the current timezone you may want to remove the
>>    ‘"tzone"’ attribute (e.g. by ‘c(x)’).
>>
>> so apparently that is a design choice and hence I doubt it can be changed as it would break code that uses that feature. As many things in R whether it was a good choice is up for debate but it has been made already. (Think about how you would combine different times with different tzones - there is no "right" way to do so and thus stripping is very plausible and consistent)
>>
> I did already address the ambiguity point in the suggested code that I
> posted.  It only maintains the tzone if there is no ambiguity.
>
> Note that there have been significant changes in POSIXt relatively
> recently, namely switching POSIXt and POSIXct class order, so it seems
> that such changes are not beyond possibility.
>
> At any rate, the underlying objective of getting time zones to work in
> the expected way still seems desirable.  If backward compatibility is
> to be invoked (even though it wasnt in the case I just cited) then it
> would still be possible to address this with a new core class or
> subclass.
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>


-- 
Spencer Graves, PE, PhD
President and Chief Operating Officer
Structure Inspection and Monitoring, Inc.
751 Emerson Ct.
San José, CA 95126
ph:  408-655-4567



More information about the R-devel mailing list