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