[Rd] proposed change to [.POSIXct

From: Whit Armstrong <Whit.Armstrong_at_tudor.com>
Date: Fri 20 Aug 2004 - 01:11:44 EST


R developers,

The "tzone" attribute is stripped from a POSIXct object when the subscript command is called ("[.POISXct"). This results in dates being printed in the locale specific format after a subscript operation is applied to a POSIXct object which has cause several problems for me in the past.

Here is an example of this problem under R 1.9.1:

> x <- ISOdate(rep(2000,2),rep(3,2),rep(26,2),hour=0) > x
[1] "2000-03-26 GMT" "2000-03-26 GMT"

> x[1]
[1] "2000-03-25 19:00:00 Eastern Standard Time"
>
> unclass(x)
[1] 954028800 954028800

attr(,"tzone")
[1] "GMT"

> unclass(x[1])
[1] 954028800

>

Here is the current code for "[.POSIXct"

> get("[.POSIXct")
function (x, ..., drop = TRUE)
{

    cl <- oldClass(x)
    class(x) <- NULL
    val <- NextMethod("[")
    class(val) <- cl
    val
}
<environment: namespace:base>
>

I believe a sensible change is the following:

"[.POSIXct" <-
function (x, ..., drop = TRUE)
{

    at <- attributes(x)
    class(x) <- NULL
    val <- NextMethod("[")
    attributes(val) <- at
    val
}

Using this code, the "tzone" attribute is preserved allowing dates to continue to be printed in their intended timezone.

Thank you for considering this issue.

Regards,
Whit Armstrong

Here are the details of my system:

> R.Version()
$platform
[1] "i386-pc-mingw32"

$arch
[1] "i386"

$os
[1] "mingw32"

$system
[1] "i386, mingw32"

$status
[1] ""

$major
[1] "1"

$minor
[1] "9.1"

$year
[1] "2004"

$month
[1] "06"

$day
[1] "21"

$language
[1] "R"

>

        [[alternative HTML version deleted]]



R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Fri Aug 20 01:18:38 2004

This archive was generated by hypermail 2.1.8 : Fri 18 Mar 2005 - 08:59:20 EST