[ESS] cannot add bindings to a locked environment
Boylan, Ross
Ro@@@Boy|@n @end|ng |rom uc@|@edu
Mon Jul 25 02:42:38 CEST 2016
More experiments. First, I tried including the file contents without loading the library. ESS seems to have detected and loaded the library anyway:
----------------------------------------------------
>
Loading required package: Matrix # LazarSim depends on Matrix
[1] "test"
[1] "shortName"
[1] "shortName"
[1] "test"
[LazarSim] Sourced file /home/ross/Lazar/LazarSim/R/Test.R
> search() # shows LazarSim loaded
[1] ".GlobalEnv" "package:LazarSim" "package:Matrix"
[4] "ESSR" "package:stats" "package:graphics"
[7] "package:grDevices" "package:utils" "package:datasets"
[10] "package:methods" "Autoloads" "package:base"
> sb <- StandBonf(alpha=0.1)
> class(sb)
[1] "StandBonf"
attr(,"package")
[1] "LazarSim" # and the definition is in the package
!> shortName(sb)
Error in assign(".SigLength", nsig, envir = env) (from Test.R#13) :
cannot add bindings to a locked environment
------------------------------------------------------------
Additionally, while typing "short" for the last line the echo area displayed
Company: Back-end (company-R-args company-R-objects :separate) error "Symbol's function definition is void: :separate" with args (ignore-case)
Second try, disabling namespace binding (not sure that's the right term) in emacs, i.e., C-c C-t C-s
The first time I typed that sequence it offered a llist with LazarSim first (even though I restarted R). I hit enter and got a message "Using namespace LazarSim". Did C-c C-t C-s again; this time None was the first choice. I hit enter. As added protection I tried C-c C-r to read in the file. LazarSim still ended up loaded.
Third try: copy the file with the test code to a directory that is not part of the package. Finally I'm able to read the file in without loading the package, and everything works OK:
--------------------------------------------------------------------
> getwd() # the package is in the LazarSim subdirectory of the working dir
[1] "/home/ross/Lazar"
> include("Test.R") #I guess I meant source()
Error: could not find function "include"
> #visited file in emacs and did C-c C-l
[1] "test"
[1] "shortName"
[1] "shortName"
[1] "test"
Sourced file /home/ross/Lazar/Test.R
> search() #no LazarSim
[1] ".GlobalEnv" "ESSR" "package:stats"
[4] "package:graphics" "package:grDevices" "package:utils"
[7] "package:datasets" "package:methods" "Autoloads"
[10] "package:base"
> sb <- StandBonf(alpha=0.1)
> class(sb)
[1] "StandBonf"
attr(,"package")
[1] ".GlobalEnv" # Yea
> shortName(sb)
[1] "StandBonf"
----------------------------------------------------------
Ross
More information about the ESS-help
mailing list