[R] Confusion regarding environments invoked by "source" command
Dennis Fisher
fisher at plessthan.com
Mon Mar 23 23:06:29 CET 2009
Colleagues,
R version 2.8.1 in OS X
Within a function (which is already within a function), I am sourcing
a file. The syntax of the command is something like (this is just an
example; the actual code is much more complicated):
BIGFUNCTION <- function()
{
DATAFRAME <- [some commands to create a dataframe]
MYFUNCTION(DATAFRAME)
}
MYFUNCTION <- function(DATAFRAME)
{
print(ls())
exists("DATAFRAME")
source("myfile", local=T)
}
The file "myfile" contains the following:
print(DATAFRAME)
When I execute BIGFUNCTION from the command line, R reports:
Error in print(DATAFRAME) : object "DATAFRAME" not found
Calls: BIGFUNCTION ... source -> eval.with.vis -> eval.with.vis ->
print -> head
Execution halted
However, the "print(ls())" command has just listed the existence of
DATAFRAME and "exists(DATAFRAME) return TRUE
So, I am at a loss as to why ls() and "exists" see the object but
print(DATAFRAME) command does not.
I tried "local=F" in the source command to no avail.
I also replaced "print(DATAFRAME)" with "print(str(DATAFRAME))" with
the same outcome.
I assume that this is an error as to how I am managing environments
but I cannot figure out a solution. Any help would be appreciated.
Dennis
Dennis Fisher MD
P < (The "P Less Than" Company)
Phone: 1-866-PLessThan (1-866-753-7784)
Fax: 1-415-564-2220
www.PLessThan.com
More information about the R-help
mailing list