David.Epstein wrote:
I'm trying to get code along the following lines to work:
temp.name <- paste(TimePt,'df',sep='.') # invent a relevant name/symbol as a
character string.
assign(temp.name,IGF.df[IGF.df$TPt==TimePt,]) # this works. The relevant
variable is now a data frame
lm(b ~ Strain+BWt+PWt+PanPix, data=temp.name)) # this gives an error, namely
Error in eval(predvars, data, env) : invalid 'envir' argument
I think it's obvious what I want to achieve, but how is it done? I tried
data=as.name(temp.name)
but that also didn't work. I can't find anything relevant in "Introduction
to R".
That's because constructing names like this is generally a bad idea.
But you can do it; you use get() to get the object whose name is in
temp.name. So put data=get(temp.name) into your lm() call.
Here is a secondary question:
While trying to understand what assign() does, I looked up help(assign) and
found the example
a <- 1:4
assign("a[1]", 2)
This creates an object with name "a[1]". That's not usually a legal
name, but assign() can still create a variable with that name.
a[1] == 2 #FALSE
This tries to find the 1st element of an object named a.
get("a[1]") == 2 #TRUE
This gets the object with the weird name.
Could someone explain this puzzling example, or point me to an explanation
of environments and how to operate with them?
See the R Language Definition. There's a section on environments, and
mention of them in a number of other places.
Duncan Murdoch
Thanks
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.