Re: [Rd] Surprising length() of POSIXlt vector (PR#14073)

From: <mark_at_celos.net>
Date: Fri, 20 Nov 2009 11:05:25 +0100 (CET)


Benilton Carvalho writes:
> I'm no expert on this, but my understanding is that the choice was
> to stick to the definition.
>
> The help file for length() [1] says:
>
> "For vectors (including lists) and factors the length is the number
> of elements."
>
> The help file for POSIXlt [2] (for example) says:
>
> "Class ?"POSIXlt"? is a named list of vectors representing (...)"
>
> and then lists the 9 elements (sec / min / hour / mday / mon / year
> / wday / yday / isdst).
>
> So, by [1] length of POSIXlt objects is 9, because it "is a named
> list of vectors representing (...)".

Thanks, all. Yes, I'd already read both, and it's obviously true that a length() of 9 is correct (as I said up-front).

The difficulty is that some functions -- importantly including "[" -- already have methods which make POSIXlt behave like a vector. The documentation for POSIXlt just says it's a list of 9 elements: it mentions methods for addition etc, but AFAICT it doesn't say that subsetting won't behave is "["'s help says for a list-like object.

In the end, "[" sees a different length to "[[" and "$" here, so a length.POSIXlt() just shuffles the issue around.

Anyhow, I somehow missed there have been other PRs on this, including discussion on r-devel of "[" and logical vs physical length() under PR#10507. I'm sorry for being repetitive.

Mark <><



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Fri 20 Nov 2009 - 12:34:54 GMT

This archive was generated by hypermail 2.2.0 : Fri 20 Nov 2009 - 15:00:31 GMT