Rolf Turner wrote:

It was recently pointed out by Wacek Kusnierczyk that although one is
prevented from doing

    FALSE <- TRUE

one *can* do

    assign("FALSE",TRUE)

and have an object named ``FALSE'' with value TRUE in one's workspace.

This apparently has no deleterious effects; e.g. doing

    sample(1:7,replace=FALSE)

gives a random permutation of 1:7 as expected and desired.  I.e. the
local object named ``FALSE'' is not used.

Still, this seems counterintuitive and a bit confusing.  Is it the intended
state of affairs?  I would have thought that

    FALSE <- <whatever>

and

    assign("FALSE",<whatever>)

would be completely equivalent.

No, FALSE is a _keyword_ representing the logical value.

> e <- quote(`FALSE` & FALSE)
> e[[2]]
`FALSE`
> e[[3]]
[1] FALSE
> mode(e[[3]])
[1] "logical"
> mode(e[[2]])
[1] "name"

The thing that is equivalent to assign("FALSE",<whatever>) is
`FALSE`<-whatever.

There are a couple of other keywords: TRUE, if, else, for, while, repeat, next, break, function. Did I forget any?

The stuff you can do with FALSE isn't really any stranger than

> `2` <- pi
> 2+2
[1] 4

so that two and two remains four for any value of `2`. You can't do 2<-pi anymore than you can do FALSE<-foo.



This is clearly not a very important issue, but it might bear some thinking about.

--
   O__  ---- Peter Dalgaard             Ă˜ster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 35327918
~~~~~~~~~~ - ([EMAIL PROTECTED])              FAX: (+45) 35327907

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

Reply via email to