From romain at r-enthusiasts.com  Tue May 31 10:34:54 2011
From: romain at r-enthusiasts.com (Romain Francois)
Date: Tue, 31 May 2011 10:34:54 +0200
Subject: [Rd] assignInNamespace and new bindings
Message-ID: <4DE4A82E.7060803@r-enthusiasts.com>

Hello,

assignInNamespace refuses to assign an object to a name that is not 
already used in the namespace.

Something like this would make it possible:

--- src/library/utils/R/objects.R	(revision 56024)
+++ src/library/utils/R/objects.R	(working copy)
@@ -252,8 +252,9 @@
              stop("environment specified is not a package")
          ns <- asNamespace(substring(nm, 9L))
      } else ns <- asNamespace(ns)
-    if(bindingIsLocked(x, ns)) {
-        unlockBinding(x, ns)
+    new_binding <- !exists(x,ns)
+    if( new_binding || bindingIsLocked(x, ns)) {
+        if(!new_binding) unlockBinding(x, ns)
          assign(x, value, envir = ns, inherits = FALSE)
          w <- options("warn")
          on.exit(options(w))

Romain

-- 
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
http://romain-francois.com
|- http://bit.ly/hdKhCy : Rcpp article in JSS
|- http://bit.ly/elZJRJ : Montpellier Comedie Club - Avril 2011
`- http://bit.ly/fhqbRC : Rcpp workshop in Chicago on April 28th



[Rd] assignInNamespace and new bindings
Romain Francois