[Rd] Confusing error message for [[.factor (PR#14209)
Duncan Murdoch
murdoch at stats.uwo.ca
Tue Feb 9 18:19:22 CET 2010
On 09/02/2010 4:50 AM, g.russell at eos-solutions.com wrote:
> Full_Name: George Russell
> Version: 2.10.0 and 2.11.0 Under development (unstable) (2010-02-08 r51108)
> OS: Windows
> Submission from: (NULL) (217.111.3.131)
>
>
> > c("a","b")[[c(TRUE,FALSE)]]
> Error in `[[.default`(factor(c("a", "b")), c(TRUE, FALSE)) :
> recursive indexing failed at level 1
>
I don't see that. I get this:
> c("a","b")[[c(TRUE,FALSE)]]
Error in c("a", "b")[[c(TRUE, FALSE)]] :
recursive indexing failed at level 1
which differs because c("a", "b") is not a factor.
> I find this error message confusing, though after reading the HELP carefully I
> think I know what is going on. Would not something like "[[ does not work with
> logical index vectors" be more appropriate?
>
No, because it sometimes does work with logical index vectors:
> x <- 1:2
> x[[TRUE]]
[1] 1
(Here the TRUE is treated as 1. I think it only works when the logical
vector contains TRUE values, FALSE will fail, just as x[[0]] fails.)
The problem is that you were asking for the FALSE entry of the TRUE
entry of the object, and since you had a simple vector, recursive
indexing fails, and that's what the message says. I imagine you had
meant to type c("a", "b")[c(TRUE, FALSE)], but how can R know you meant
that?
Duncan Murdoch
More information about the R-devel
mailing list