Skip to content

rep fails on pairlist

5 messages · Dirk Eddelbuettel, Duncan Murdoch, Gabor Grothendieck

#
This code which has worked for years in R but fails under R-devel:
[1] "R Under development (unstable) (2012-07-25 r59963)"
Error in rep(formals(f), n) : replication of pairlists is defunct

The message suggests that the change was intentional.
Why was this functionality removed?
What code should be used in its place?
#
On 26 July 2012 at 15:55, Gabor Grothendieck wrote:
| This code which has worked for years in R but fails under R-devel:
| 
| > R.version.string
| [1] "R Under development (unstable) (2012-07-25 r59963)"
| >
| > n <- 3
| > f <- function(x) {}
| > formals(f) <- rep(formals(f), n) ##
| Error in rep(formals(f), n) : replication of pairlists is defunct
| 
| The message suggests that the change was intentional.
| Why was this functionality removed?
| What code should be used in its place?

FWIW there are changes happening right now to rep() so that may be spillage
from code under development.  To keep abreast of these changes, I follow the
RSS feed Duncan set up a few years ago -- it is also as html at

   http://developer.r-project.org/blosxom.cgi/R-devel

and summarizes changes committed to the NEWS file, ie high-level changes
worth knowing about.

Dirk
#
On Thu, Jul 26, 2012 at 4:24 PM, Dirk Eddelbuettel <edd at debian.org> wrote:
That page says:

Calling ?rep()? or ?rep.int()? on a pairlist or other non-vector
object is now an error.

so it again seems to be intentional.
#
On 12-07-26 3:55 PM, Gabor Grothendieck wrote:
rep() on a pairlist didn't return a pairlist, it coerced to a list and 
then rep'd that.  So you could do the same explicitly if that's what you 
really want:

formals(f) <- rep(as.list(formals(f)), n)

This works because the formals<- code is forgiving; other uses of 
pairlists would not accept the result of rep on a pairlist.

Duncan Murdoch
#
On Thu, Jul 26, 2012 at 7:29 PM, Duncan Murdoch
<murdoch.duncan at gmail.com> wrote:
Thanks. I will use that instead.