[R] Tidying up code - Warning message: deparse may be incomplete

Martin Maechler maechler at stat.math.ethz.ch
Fri Aug 29 15:36:16 CEST 2008


>>>>> "DM" == Duncan Murdoch <murdoch at stats.uwo.ca>
>>>>>     on Fri, 29 Aug 2008 08:36:12 -0400 writes:

    DM> On 28/08/2008 10:46 AM, Marie Pierre Sylvestre wrote:
    >> Dear R users,
    >> 
    >> I am currently writing a R package and to do so I am following the
    >> guidelines in manual 'Writing R extensions'.
    >> 
    >> In Section 3.1, it is suggested to tidy up the code using a file
    >> containing the following:
    >> options(keep.source = FALSE)
    >> source("myfuns..R")
    >> dump(ls(all = TRUE), file = new.myfuns.R")
    >> 
    >> I have done this for my own packages and although it runs, I get several
    >> warnings of the type:
    >> 
    >> Warning message:
    >> In dump(ls(all = TRUE), file = "PermAlgo.R") : deparse may be incomplete
    >> 
    >> I am clueless as to what this means.
    >> 
    >> Even if I try to tidy only one function from my code, I get the warning.
    >> 
    >> 
    >> E.g. the file lala.R contains only this:
    >> partialHazards <- function(t, v, covArray, betas){   exp( covArray[v,t,]
    >> %*% betas ) }
    >> 
    >> the file tidylala.R contains:
    >> 
    >> options(keep.source = FALSE)
    >> source("lala.R")
    >> dump(ls(all = TRUE), file = "newlala.R")
    >> 
    >> On Linux I run:
    >> 
    >> R --vanilla < tidylala.R      
    >> 
    >> Then I obtain:
    >> 
    >> Warning message:
    >> In dump(ls(all = TRUE), file = "newlala.R") : deparse may be incomplete
    >> 
    >> The file newlala.R looks like this:
    >> 
    >> `partialHazards` <-
    >> function (t, v, covArray, betas)
    >> {
    >> exp(covArray[v, t, ] %*% betas)
    >> }
    >> 
    >> What does the warning mean? Can I simply ignore it?

    DM> I've now taken a look, and this really was a bug.  source() was 
    DM> partially ignoring options(keep.source = FALSE), and this confused 
    DM> dump().  I've fixed it in R-patched.

    DM> I've also clarified the advice about tidying up code, by adding a 
    DM> warning that following it will delete all of your comments.  I think 
    DM> you're better off writing it in a tidy way in the first place, or using 
    DM> a smart editor to reformat it.  R retains enough information to write a 
    DM> code prettifier that preserves comments, but I don't know of one.

I strongly agree with your last paragraph,
and I have always thought that we should recommend using
R-aware editors rather than  dump() nowadays ...
but then I thought that I've been biased at all times, being a
co-developer of ESS, authoring its M-x ess-fix-miscellaneous
(and more), and also the author of a (non public) Emacs lisp
file called 'R-stylepolice.el' as early as in 1999.....

Martin Maechler

    DM> Duncan Murdoch



More information about the R-help mailing list