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
Using loop numbers in write.csv
4 messages · Erik Iverson, Greg Snow, Economics Guy
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:
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
______________________________________________ R-help at r-project.org 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.
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,
Gregory (Greg) L. Snow Ph.D.
Statistical Data Center
Intermountain Healthcare
greg.snow at imail.org
(801) 408-8111
> -----Original Message-----
> From: r-help-bounces at r-project.org
> [mailto:r-help-bounces at r-project.org] On Behalf Of Economics Guy
> Sent: Thursday, March 13, 2008 11:07 AM
> To: r-help at stat.math.ethz.ch
> Subject: [R] Using loop numbers in write.csv
>
> 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
>
> ______________________________________________
> R-help at r-project.org 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.
>
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:
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,
--
Gregory (Greg) L. Snow Ph.D.
Statistical Data Center
Intermountain Healthcare
greg.snow at imail.org
(801) 408-8111
> -----Original Message-----
> From: r-help-bounces at r-project.org
> [mailto:r-help-bounces at r-project.org] On Behalf Of Economics Guy
> Sent: Thursday, March 13, 2008 11:07 AM
> To: r-help at stat.math.ethz.ch
> Subject: [R] Using loop numbers in write.csv
>
> 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
>
______________________________________________ > R-help at r-project.org 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. >
Robi Ragan Graduate Student Department of Economics Department of Political Science The University of Georgia robi.myweb.uga.edu