Skip to content

Use of variables to reference to objects

4 messages · Kris Nackaerts, Uwe Ligges, Thomas Lumley +1 more

#
Hi,

I'm new to R and looking for a way to use a variable to reference to an 
object.

I'm plotting several graphs on top of each other and want to do this by 
a for loop. The field I want to graph have names like a1,a2,a3, ...
I can't figure out how to get this working:

It should look like this:
lines(spectral$Wavelength,paste("spectral$a",j,sep=""),col=j)

but the "paste()" does not seem to work in this context.

Any help?

Kind regards,

Kris
#
Kris Nackaerts wrote:
1. I suggest to generate a list "a", which can be indexed with a[[j]],
so you don't need any sophisticated mechanism to reference to your
objects.

2. Answer of your question: Use get().

Uwe Ligges
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
#
On Fri, 22 Nov 2002, Kris Nackaerts wrote:

            
No, it wouldn't.  That gives you the name of the variable, not the
variable.

Probably the simplest solution is either
   lines(spectral$Wavelength, spectral[[paste("a",j,sep="")]],col=j)
but there's also
   lines(spectral$Wavelength,get(paste("spectral$a",j,sep="")),col=j)
and various others

	-thomas

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
#
The "get" function is the usual answer to this sort of question, but is 
not right
for this particular case.  Actually, a simpler answer works.

lines(spectral$Wavelength, spectral[[ paste("a", j, sep="") ]], col=j)

Using "get" would want to get objects with names like "spectral$a1"
rather than the "a1" component of "spectral".



Patrick Burns
patrick at burns-stat.com
+44 (0) 208 525 0696
http://www.burns-stat.com/    (new home of S Poetry)
Kris Nackaerts wrote:

            
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._