From hadley at rice.edu  Wed Jul  6 03:25:35 2011
From: hadley at rice.edu (Hadley Wickham)
Date: Tue, 5 Jul 2011 21:25:35 -0400
Subject: [Rd] Syntactically valid names
In-Reply-To: <A16B0AB7-C30E-482D-B91A-EC3CC2C70CB9@gmail.com>
References: <BANLkTimg=TM0hYA1=Obknb+486Hv8T7Fdw@mail.gmail.com>
	<2698F67A-DDF9-4EAF-B7A8-A4FAAE9CCC6B@gmail.com>
	<CABdHhvHmRP6XOkTq+4Z1NjvW1SRwqt1AUwga_ovbMOfi3zi5oA@mail.gmail.com>
	<CAFFLneRp4YY7U+Nn26C+hFhX-4PWaHZMFizBmgEtNg2jjK93qg@mail.gmail.com>
	<CABdHhvEhKGZjSX_fRAAi6_PjHgnhOra_f7w8Y+R8Pw8gGm92OQ@mail.gmail.com>
	<A16B0AB7-C30E-482D-B91A-EC3CC2C70CB9@gmail.com>
Message-ID: <CABdHhvGAP7+0FeDtyBiKFtdnP6+oAnYjkEUpBQVChY5toVqHCA@mail.gmail.com>

> 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."

>>> 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

Hadley

-- 
Assistant Professor / Dobelman Family Junior Chair
Department of Statistics / Rice University
http://had.co.nz/



[Rd] Syntactically valid names
Hadley Wickham