On Wed, 6 Aug 2003 [EMAIL PROTECTED] wrote:
> QUESTION TO EXPERTS:
> While (a construction I've often used successfully):
>
> for(Z in c("X1","X2","X3")){
> Z<-eval(as.name(Z))
> do.something.with(Z) }
>
> works, going through the variables named "X1", "X2", "X3" in
> turn, when I was trying to clean up Cezar's example above I found
> that if you construct the name Z by pasting so that it comes to
> "my.data$X1" then the object "my.data$X1" is not found. Presumably
> this is because the "$" operator is not functional in this context,
> but I can't locate an explanation of this. Can anyone elucidate?
Because as.name() converts the string to a name, but you wanted an
expression (the X1 component of my.data).
In r-devel this is visually clearer
> as.name("my.data$X1")
`my.data$X1`
the backticks indicating a syntatically weird name. You can do eg
> `my.data$X1` <- 42
> eval(as.name("my.data$X1"))
[1] 42
In current R versions you would have to use
assign("mydata$X1", 42)
to assign to this variable.
To get the X1 component of my.data you would need
eval(parse(text="my.data$X1"))
> my.data<-data.frame(X1=1:2,X2=2:3)
> parse(text="my.data$X1")
expression(my.data$X1)
> eval(parse(text="my.data$X1"))
[1] 1 2
-thomas
______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help