On Jul 6, 2011, at 03:25 , Hadley Wickham wrote: >> What's wrong with that? They are names alright, just with special meanings. > > But you can't really use them for variables: > >> ... <- 4 >> ... > Error: '...' used in an incorrect context >> ..1 <- 4 >> ..1 > Error: 'nthcdr' needs a list to CDR down > > And make.names generally protects you against that: > >> make.names("function") > [1] "function." >> make.names("break") > [1] "break." >> make.names("TRUE") > [1] "TRUE."
That's two different issues: > y <- list() > y$... <- 2 > y$..2 <- 3 > y$break <- 4 Error: unexpected 'break' in "y$break" Notice that there is nothing _syntactically_ wrong with ... & friends as names: > quote(...<-4) ... <- 4 It's the _evaluator_ that throws the error because the ...-name has a special interpretation. > >>>> x <- paste(rep("x", 1e6), collapse = "") >>>> x == make.names(x) >>> [1] TRUE >> >> Mildly insane, but technically OK, no? > > I don't think so: > >> x <- paste(rep("x", 1e6), collapse = "") >> assign(x, 1) > Error in assign(x, 1) : variable names are limited to 10000 bytes But that's a sanity check, with an arbitrary cutoff. A string of a million "x"s is syntactically a valid name, it's just the evaluator that refuses to play with it. (Not to say that it would be wrong to put in a similar sanity check in make.names.) -- Peter Dalgaard Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Email: pd....@cbs.dk Priv: pda...@gmail.com ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel