Re: [R] R annoyances

From: bogdan romocea <>
Date: Sat 21 May 2005 - 02:12:17 EST

Prof Ripley,

I'm aware of R CMD check, but who uses it? Not many regular users, I presume. As long as T/F are allowed to stand for TRUE/FALSE without being reserved words, there will be users who will fall in the trap.

As your example shows, some code would have to be manually converted. Avoiding the difficult conversion may well be considered more important than ensuring that new/intermediate R users don't get into trouble. (After all, it's the experts who make the decisions, and who have a large investment in existing code.) From another perspective though, the total quantity of past, current - and especially future - T/F mistakes made by the new members of a rapidly increasing R user base may outweigh the difficulties the experts would have to go through to convert their code.

-----Original Message-----
From: Prof Brian Ripley [] Sent: Friday, May 20, 2005 9:39 AM
To: bogdan romocea
Subject: RE: [R] R annoyances

On Fri, 20 May 2005, bogdan romocea wrote:

> On 20-May-05 Uwe Ligges wrote:
>> All possible changes to T/F (both removing the meaning of
>> TRUE/FALSE in a clean session and making them reserved words)
>> would break code of lots of users.
> Just wanted to point out that there's another (darker) side to this:
> code that produces bad results without the users even realizing it.
> Personally, I would clearly prefer lots of broken code to mistakes
> caused by T/TRUE and F/FALSE.

You do realize that R CMD check checks for use of unassigned T/F? So it would only be unchecked code which did that.

> Hypothetically, if whatever=T/F were forbidden and only
> whatever=TRUE/FALSE were allowed, all the code could be fixed with a
> simple sed script:
> for F in `ls *.r`
> do
> mv $F $F.$$
> sed -e 's/=T,/=TRUE,/g' -e 's/=F,/=FALSE,/g' -e 's/=T)/=TRUE)/g' -e
> 's/=F)/=FALSE)/g' $F.$$ > $F
> rm $F.$$
> done

I assure you it is a *lot* harder than that. Some of us use spaces for a start. No sed script can know the difference between

F <- "2"; as.numeric(x = F)
F <- "2"; as.numeric(x = FALSE)

(I know because I used to share code bases for S-PLUS and R, and had Perl scripts to do the conversion that worked for my style, but not for some other authors' code.)

Brian D. Ripley,        
Professor of Applied Statistics,
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________ mailing list
PLEASE do read the posting guide!

______________________________________________ mailing list
PLEASE do read the posting guide!
Received on Sat May 21 02:29:14 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:31:58 EST