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

Hervé Pagès hpages at fhcrc.org
Thu May 2 08:51:29 CEST 2013

On 05/01/2013 07:20 PM, Duncan Murdoch wrote:
> On 13-05-01 4:08 PM, Tim Triche, Jr. wrote:
>> What harm comes of having the code be cut-and-paste-able?
>> I do not mean to be contrary but a downside to applying the patch
>> seems to
>> be lacking.
>> Perhaps I am missing something obvious and if so I beg your pardon for
>> wasting your time.
> 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.

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.

>   - it would mean that lots of tests for changes in output would
> suddenly fail.

Lots of tests really? Where are they?

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

Is that number supposed to impress someone?


   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.

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

You clearly underestimate the harm the current formatting causes
every day to many R users, developers, teachers, students...


> Duncan Murdoch
>> Thanks,
>> --t
>> On Wed, May 1, 2013 at 12:19 PM, Duncan Murdoch
>> <murdoch.duncan at gmail.com>wrote:
>>> On 01/05/2013 1:34 PM, Tim Triche, Jr. wrote:
>>>> +1 to having runnable code emitted
>>> 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
>>>> patch seems to work nicely, hopefully R-core will agree to apply it to
>>>> HEAD
>>>> On Wed, May 1, 2013 at 9:45 AM, Paul Johnson <pauljohn32 at gmail.com>
>>>> wrote:
>>>>> Whoa.
>>>>> Don't let my valuable suggestion get lost.
>>>>>   I want "} else {".  Yihue wants "} else {".  And I have not heard
>>>> anybody
>>>>> say they prefer the other way, unless you interpret Duncan's comment
>>>>> "that's nonsense" as a blanket defense of the status quo. But I don't
>>>> think
>>>>> he meant that.  This is a matter of style consistency and avoidance of
>>>> new
>>>>> R-user confusion and error.
>>>>> After reading the help for "if", I don't see how anybody can argue
>>>> against
>>>>> this.  Good R code has this style:
>>>>> } else {
>>>>> and not
>>>>> }
>>>>>   else
>>>>> because the latter fails if it is run line-by-line.  While trying to
>>>> teach
>>>>> people how to write R programs, it would be nice if the output of
>>>>> print.function was consistent with the good way, the way that is
>>>> actually
>>>>> practiced in the R source code itself. This is a major source of new
>>>>> programmer confusion. Its very tough to explain and teach.
>>>>> pj
>>>>> --
>>>>> Paul E. Johnson
>>>>> Professor, Political Science      Assoc. Director
>>>>> 1541 Lilac Lane, Room 504      Center for Research Methods
>>>>> University of Kansas                 University of Kansas
>>>>> http://pj.freefaculty.org               http://quant.ku.edu
>>>>>          [[alternative HTML version deleted]]
>>>>> ______________________________**________________
>>>>> R-devel at r-project.org mailing list
>>>>> https://stat.ethz.ch/mailman/**listinfo/r-devel<https://stat.ethz.ch/mailman/listinfo/r-devel>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

Hervé Pagès

Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M1-B514
P.O. Box 19024
Seattle, WA 98109-1024

E-mail: hpages at fhcrc.org
Phone:  (206) 667-5791
Fax:    (206) 667-1319

More information about the R-devel mailing list