Get message "cannot do complex assignments in base namespace"error
Thon de Boer wrote:
Thanks for the fast reply. When I use --vanilla for Rterm.exe (Using windows here) I do not get the problem anymore, so that solved half my problems. Thanks (I had used --slave --no-save --no-restore) But I seem to have the problem of getting the error message "cannot do complex assignments in base namespace" when I try to run Rgui.exe. This is what I am trying to do. I would like to run the Rgui program that would start up and do some graphical plots or use the fileBrowser() widget to load some files. I have created the following BAT file for windows: @echo off set R_PROFILE=%1 set %2=%3 set %4=%5 set %6=%7 set %8=%9 cat.exe > GS_R_in.txt rw1081\bin\Rgui.exe --no-save --no-restore cat.exe < GS_R_out.txt del GS_R_in.txt GS_R_out.txt that is run by my program (GeneSpring). The first command line argument is the R script that I want to run and the four consecutive key-value pairs are the system environment variable that I set that will be picked up by the R script. GeneSpring will also pump some data into the STDOUT that is picked up by the cat.exe program we wrote and dumps it in a file that is picked up in return by the R script. so the complete command would be something like myR.bat script.R foo bar aap noot mies zus kees bal < INPUT.txt > OUTPUT.txt I had to resort to setting the R script as the R_PROFILE environment variable to force Rgui to start the R script I give it.
And that's the point! Don't use Rprofile to execute scripts, because everything assigned in there will be loaded into base on startup. (See ?Startup) For running scripts I'd recommend to use Rcmd BATCH (you will need Perl, though), but it's also possible with rterm.exe. Uwe Ligges
In the R script there seem to be the complex assignments like i at expName <- "Just a character string" where i is a defined class. This is the assignment R complains about, but only when I run the script as the R_PROFILE. If I run the script as source() etc. it runs fine. Hope this sheds some light on the problem... Thanks, Thon --- Prof Brian Ripley <ripley at stats.ox.ac.uk> wrote:
Could you 1) Try with --vanilla. 2) Show us a small example. In general user code should not be assigning in base (are you using <<- by any chance?), but there is no difference when redirecting input in Rterm as to where code is run. (Your command-line flags may well affect it, though.) On Sat, 20 Dec 2003, Thon de Boer wrote:
I am constantly running into the problem where I
get
error messages like "cannot do complex assignments
in
base namespace".
`Like' or precisely, and all the same or not?
It might have something to do with the fact that R
has
not started up completely, since I am trying to
run
some R script using Rterm < Rscript.R.
That should not work: you should need to set a command-line flag to determine if you want the session saved or not. Given that a proper version of this is used for all the testing we do, we are pretty confident that it does work correctly in a factory-fresh environment.
When I perform the same script in a Interactive R session, the R script has no problem with the assignments that it deems complex (like assgining
a
new value to a slot in a class object). Also, when I encapsulate the offending scripts
inside
a local({ ... }) block, I also do not get the
error,
so my theory is that my script is being run in the wrong namespace, or R has not completely started
up
yet or something. Does anyone have an idea how I can fix this,
without
having to run within the local block?
Sorry, we need to know what `this' is, first. -- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595
______________________________________________ R-help at stat.math.ethz.ch mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help