On 09/02/2010 4:50 AM, g.russ...@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

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to