[R] R annoyances

bogdan romocea br44114 at gmail.com
Fri May 20 18:12:17 CEST 2005

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 [mailto:ripley at stats.ox.ac.uk]
Sent: Friday, May 20, 2005 9:39 AM
To: bogdan romocea
Cc: R-help at stat.math.ethz.ch
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,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

R-help at stat.math.ethz.ch mailing list
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

More information about the R-help mailing list