From romain.francois at dbmail.com  Wed Sep 15 11:21:47 2010
From: romain.francois at dbmail.com (Romain Francois)
Date: Wed, 15 Sep 2010 11:21:47 +0200
Subject: [Rd] list2env( list() )
Message-ID: <4C90902B.7030803@dbmail.com>

Hello,

list2env generates an error on empty lists.

 > l <- list()
 > list2env( l )
Erreur dans list2env(l) : names(x) must be valid character(length(x)).


This is consistent with the requirement that the list must be a 
__named__ list, so this works:

 > names(l) <- character(0)
 > list2env( l )
<environment: 0x102b8fbc8>


But I was wondering if it would make sense to make a special case of 
zero sized lists, with this:

Index: src/main/envir.c
===================================================================
--- src/main/envir.c	(revision 52910)
+++ src/main/envir.c	(working copy)
@@ -1555,7 +1555,7 @@
      x = CAR(args); args = CDR(args);
      n = LENGTH(x);
      xnms = getAttrib(x, R_NamesSymbol);
-    if (TYPEOF(xnms) != STRSXP || LENGTH(xnms) != n)
+    if (n && (TYPEOF(xnms) != STRSXP || LENGTH(xnms) != n) )
  	error(_("names(x) must be valid character(length(x))."));
      envir = CAR(args);  args = CDR(args);
      if (TYPEOF(envir) == NILSXP) {


Romain

-- 
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
|- http://bit.ly/cCmbgg : Rcpp 0.8.6
|- http://bit.ly/bzoWrs : Rcpp svn revision 2000
`- http://bit.ly/b8VNE2 : Rcpp at LondonR, oct 5th



[Rd] list2env( list() )
Romain Francois