R 0.65.x bug : attach()/eval() {was "lib.source() within library()"} (PR#264)

About this list Date view Thread view Subject view Author view Other groups

Subject: R 0.65.x bug : attach()/eval() {was "lib.source() within library()"} (PR#264)
maechler@stat.math.ethz.ch
Date: Thu 02 Sep 1999 - 20:23:53 EST


Message-Id: <199909021023.MAA15071@pubhealth.ku.dk>

In 0.65.0 lib.source() within library() works differently
and fails to correctly "load" a library when it wants to change an object
that it has defined previously:

Below is a very short shar file that produces a "minimal" example [no
attachment, just appended].
To reproduce {read on, before doing it!} do

   sh < libBug.shar <<<<< the file name you gave
   R INSTALL libBug

   echo 'library(libBug)' | R --vanilla --quiet

which gives

    Error: attempt to set an attribute on NULL
    Execution halted

----

The only R code in the whole library is in libBug/R/only.R

bla <- pi names(bla) <- "N"

However, with help of debug(library) and *inside* library debug(lib.source)

I can now reproduce the problem without needing library() directly:

env <- attach(NULL, name = "libBug") exprs <- expression(bla <- pi, names(bla) <- "N") for (i in exprs) yy <- eval(i, env)

##-> Error: attempt to set an attribute on NULL

and replacing the last line by

for (i in exprs){ yy <- eval(i,env);print(ls(env=env)) cat("bla:",get("bla",env=env),"\n") } gives

[1] "*tmp*" "bla" bla: 3.14159265358979 Error: attempt to set an attribute on NULL

-----

#!/bin/sh # This is a shell archive (produced by GNU sharutils 4.2). # To extract the files from this archive, save it to some FILE, remove # everything before the `!/bin/sh' line above, then type `sh FILE'. # # Made on 1999-09-02 12:00 MET DST by <maechler@sophie>. # Source directory was `/users/u1/staff/maechler/R'. # # Existing files will *not* be overwritten unless `-c' is specified. # This format requires very little intelligence at unshar time. # "if test", "echo", "mkdir", and "sed" may be needed. # # This shar contains: # length mode name # ------ ---------- ------------------------------------------ # 28 -rw-r--r-- libBug/R/only.R # 47 -rw-r--r-- libBug/TITLE # echo=echo if mkdir _sh21127; then $echo 'x -' 'creating lock directory' else $echo 'failed to create lock directory' exit 1 fi # ============= libBug/R/only.R ============== if test ! -d 'libBug'; then $echo 'x -' 'creating directory' 'libBug' mkdir 'libBug' fi if test ! -d 'libBug/R'; then $echo 'x -' 'creating directory' 'libBug/R' mkdir 'libBug/R' fi if test -f 'libBug/R/only.R' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'libBug/R/only.R' '(file already exists)' else $echo 'x -' extracting 'libBug/R/only.R' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'libBug/R/only.R' && Xbla <- pi Xnames(bla) <- "N" SHAR_EOF : || $echo 'restore of' 'libBug/R/only.R' 'failed' fi # ============= libBug/TITLE ============== if test -f 'libBug/TITLE' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'libBug/TITLE' '(file already exists)' else $echo 'x -' extracting 'libBug/TITLE' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'libBug/TITLE' && XlibBug Simple Package to show lib.source() bug SHAR_EOF : || $echo 'restore of' 'libBug/TITLE' 'failed' fi rm -fr _sh21127 exit 0

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._


About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b25 : Tue 04 Jan 2000 - 14:16:08 EST