Skip to content

Patch proposal for R style consistency (concerning deparse.c)

10 messages · Paul Johnson, Tim Triche, Jr., Hervé Pagès +2 more

#
On 01/05/2013 1:34 PM, Tim Triche, Jr. wrote:
It does emit runnable code, which is why Herve's complaint was 
nonsense.  It doesn't emit code of which every substring is runnable.

Duncan Murdoch
#
On 05/01/2013 12:19 PM, Duncan Murdoch wrote:
Perdon me, but I was not of course suggesting that every substring be
runnable. That would be non-sense. So please, don't make me say what
I didn't say. Thank you!

H.

  
    
#
On 13-05-01 4:08 PM, Tim Triche, Jr. wrote:
I think you are missing some downsides which may not be obvious:

  - it would mean that lots of published results would no longer match 
what R produces.
  - it would mean that lots of tests for changes in output would 
suddenly fail.
  - it would support the mistaken belief that some people have that the 
current output is not valid code (even though there are nearly 200,000 
instances of similar usage on CRAN).

Perhaps 20 years ago it should have been written the way you suggest, 
but it would cause far more harm than benefit to change it now.

Duncan Murdoch
#
On 05/01/2013 07:20 PM, Duncan Murdoch wrote:
What kind of published results? Results that do statistics on the nb
of lines of code in a function based on the output of print.function()?

Would it make sense to try to reproduce results that were published 5
or 10 years ago with R >= 3.0.0? Too many things have changed in R
and on CRAN anyway so it's hopeless. The only reasonable/realistic way
to reproduce is to use the version of R and packages that were used
at the time of the publication.
Lots of tests really? Where are they?
Is that number supposed to impress someone?

Running

   grep -E '^[[:space:]]*else' */R/*

produces 112,518 lines of output on the 4479 source packages currently 
available on CRAN. So 112,518 "if else" statements use the formatting
that breaks copy/paste.

Also, interestingly, running

   grep else */R/*

on those packages produces 276028 lines of output. So only 34% of the
"if else" statements use the formatting that breaks copy/paste. Far
from being the dominant idiom, which is probably a good sign for CRAN.

Unfortunately, with the current output of print.function(), 100% of
the "if else" statements on CRAN break copy/paste. Unfair for the
majority of CRAN contributors to see their nicely formatted code
exposed that way to the end-user. Unfair for the end-user, especially
the R novice, to get code s/he cannot copy/paste.
You clearly underestimate the harm the current formatting causes
every day to many R users, developers, teachers, students...

H.

  
    
#
On 01/05/2013 3:34 PM, Joris Meys wrote:
Just one last comment to finish off my participation in this thread.  I 
think that in general, "+1" votes mean almost nothing. To have a change 
accepted, you need to convince a member of R Core that it's a good idea, 
without convincing another one that it's a bad idea.

Personally I listen to arguments for changes, but repetitions of the 
same argument are just irritating.  I was not convinced by the 
copy-and-paste argument.  I think that if this is causing you problems 
in teaching, you're doing it wrong.  I'm not going to be convinced by 
repetitions of that same argument.

Duncan Murdoch