[R] I don't understand this

Richard A. O'Keefe ok at cs.otago.ac.nz
Tue Sep 2 07:12:14 CEST 2003

For reasons which I'll spare you, I'm writing a program to analyse
R source code.  This has led me to probe some of the darker corners
of R syntax to find out what is supposed to happen.

Now, from reading the R documentation (and the New S book &c) I know
perfectly well that
    f(a, b, etc) <- x
is supposed to turn into
    a <- "f<-"(a, b, etc, value=x)

Except, what if f is not an identifier or string?
What, for example, should _this_ do?

> x <- NULL
> (if (TRUE) names else dim)(x) <- 27

I was expecting _either_ that I would be told that you can't
set names(NULL) to 27, _or_ that I would be told the whole thing
wasn't allowed.

In fact, it was allowed.

> x
[1] 27

This result has me completely baffled.

Is this behaviour intentional?
What rules does it follow from?
What _exactly_ are the rules for assignment supposed to be _in R_?

The emphasis on _in R_ is because I know the New S book spells out
a lot of detail, but (a) I've been searching for my copy for a couple
of weeks and (b) R is not _exactly_ the same as S.

More information about the R-help mailing list