Skip to content

Using loop numbers in write.csv

4 messages · Erik Iverson, Greg Snow, Economics Guy

#
This is a question I have wanted to ask for a while but hesitated
because I was sut sure I would find the answer on my own, but as of
yet...no dice.

1) Is there a way to use the loop number in naming things in R.
Specifically I have  a simulation that has two loops. I would like to
be able to write out the results to a csv file after each iteration.

something like:


        for (i in 1:10){
        	
        	exampleMatrix <-  matrix(runif(25, 0, 1),5, 5)
        	
        	write.csv(exampleMatrix, file = "resultsMatrix_i.csv")
        	
        	}

Where I would get 10 csv files named resultsMatrix_1, resultsMatrix_2
... resultsMatrix_10.


2) On a similar note is there a way to use the loop number when naming things.

something like:


        for (i in 1:10){
        	
        	exampleMatrix_i <-  matrix(runif(25, 0, 1),5, 5)
        	
        	}

Where I would then have 10 matrices in memory with the names
exampleMatrix_1, exampleMatrix_2 ... exampleMatrix_10.

Thanks,

EG
#
See ?paste and ?assign, those will get what you want done.

At least in the second case, you might consider using a list, however. 
You can then avoid the use of 'for' loops by using functions such as lapply.

Best,
Erik Iverson
Economics Guy wrote:
#
For filenames you can do something like:

 file = paste("resultsMatrix_', i, sep='')

For naming objects in the workspace, there is a way, but you really
don't want to do that.  It is better to store them in a list, for
example:

resultList <- list()
for( i in 1:10){
     	resultList[[i]] <-  matrix(runif(25, 0, 1),5, 5)
   }

If you want the elements of the list named you can do:

names( resultList ) <- paste('resultMatrix_',1:10, sep='')

Now you have 10 matricies all grouped together in a list, you can access
a single matrix like resultList[[1]] or resultList$resultMatrix_1, or
you can do something to all of them using lapply or sapply.  You are
much less likely to overwrite data by accident, you can save, copy,
load, delete, etc the whole set in 1 step rather than using a loop.

Hope this helps,
#
Thanks!

Double thanks to Phil, I used your guide to learn LaTeX many moons ago.
On Thu, Mar 13, 2008 at 1:26 PM, Greg Snow <Greg.Snow at imail.org> wrote: