[R] Macros in R

Gabor Grothendieck ggrothendieck at gmail.com
Tue Feb 27 20:11:15 CET 2007


The FAQ does mention your point already.

On 2/27/07, Greg Snow <Greg.Snow at intermountainmail.org> wrote:
> Others have pointed you to the answer to your question, but both FAQ
> 7.21 and the assign help page should really have a big banner at the top
> saying "Here Be Dragons".
>
> Using a loop or other automated procedure to create variables in the
> main namespace can cause hard to find bugs, accidentally clobber
> existing variables, and other non-fun things.
>
> For this type of thing it is usually best to use a list (or an
> environment, but I am more comforatable with lists).
>
> For your example you could do something like:
>
> > mymats <- list()
> > for (i in 1:54){
> +   myname <- paste('mymatrix',i,sep='')
> +   mymats[[myname]] <- matrix( # insert whatever code you want here
> + }
>
> A big advantage of this approach is that you can then deal with your
> list of matricies as a single unit.  If you want to delete them, you
> just delete the list rather than having to delete 54 individual
> matricies.  The list can also be saved as a single unit to a file,
> passed to another function, etc.
>
> To access a single matrix (for example 'mymatrix5' which is in position
> 5) you have several options:
>
> > mean( mymats[[5]] )
> > mean( mymats[['mymatrix5']] )
> > with( mymats, mean(mymatrix5) )
> > attach(mymats)
> > mean(mymatrix5) # as long as there is not a mymatrix 5 in the global
> environment
> > detach()
>
> And probably others.
>
> Hope this helps,
>
> --
> Gregory (Greg) L. Snow Ph.D.
> Statistical Data Center
> Intermountain Healthcare
> greg.snow at intermountainmail.org
> (801) 408-8111
>
>
>
> > -----Original Message-----
> > From: r-help-bounces at stat.math.ethz.ch
> > [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Monika Kerekes
> > Sent: Sunday, February 25, 2007 9:03 AM
> > To: r-help at stat.math.ethz.ch
> > Subject: [R] Macros in R
> >
> > Dear members,
> >
> >
> >
> > I have started to work with R recently and there is one thing
> > which I could not solve so far. I don't know how to define
> > macros in R. The problem at hand is the following: I want R
> > to go through a list of 1:54 and create the matrices input1,
> > input2, input3 up to input54. I have tried the following:
> >
> >
> >
> > for ( i in 1:54) {
> >
> >       input[i] = matrix(nrow = 1, ncol = 107)
> >
> >       input[i][1,]=datset$variable
> >
> > }
> >
> >
> >
> > However, R never creates the required matrices. I have also
> > tried to type input'i' and input$i, none of which worked. I
> > would be very grateful for help as this is a basic question
> > the answer of which is paramount to any further usage of the software.
> >
> >
> >
> > Thank you very much
> >
> >
> >
> > Monika
> >
> >
> >
> >
> >       [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help at stat.math.ethz.ch 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.
> >
>
> ______________________________________________
> R-help at stat.math.ethz.ch 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.
>



More information about the R-help mailing list