[R] Macros in R
Greg Snow
Greg.Snow at intermountainmail.org
Tue Feb 27 20:07:43 CET 2007
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.
>
More information about the R-help
mailing list