[Rd] dput(as.list(function...)...) bug

Stavros Macrakis macrakis at alum.mit.edu
Tue Mar 24 00:37:52 CET 2009


Tested in R 2.8.1 Windows

> ff <- formals(function(x)1)
> ff1 <- as.list(function(x)1)[1]
# ff1 acts the same as ff in the examples below, but is a list rather
than a pairlist

> dput( ff , control=c("warnIncomplete"))
list(x = )

This string is not parsable, but dput does not give a warning as specified.

> dput( ff , control=c("all","warnIncomplete"))
list(x = quote())

This string is parseable, but quote() is not evaluable, and again dput
does not give a warning as specified.

In fact, I don't know how to write out ff$x.  It appears to be the
zero-length name:

    is.name(ff$x) => TRUE
    as.character(ff$x) => ""

but there is no obvious way to create such an object:

    as.name("") => execution error
    quote(``) => parse error

The above examples should either produce a parseable and evaluable
output (preferable), or give a warning.

            -s

PS As a matter of comparative linguistics, many versions of Lisp allow
zero-length symbols/names.  But R coerces strings to symbols/names in
a way that Lisp does not, so that might be an invitation to obscure
bugs in R where it is rarely problematic in Lisp.

PPS dput(pairlist(23),control="all") also gives the same output as
dput(list(23),control="all"), but as I understand it, pairlists will
become non-user-visible at some point.



More information about the R-devel mailing list