[R] More on for() Loop...

John Fox jfox at mcmaster.ca
Sat Jun 8 14:59:28 CEST 2002

Dear Kevin,

At 10:44 PM 6/8/2002 +1200, Ko-Kang Kevin Wang wrote:

>Say I want to do something like fitting 10 different sized trees with
>rpart() function.  The only modification I need to do is to set 10
>different cp's, which I have in a vector called foo.
>Can I do something like:
>for(i in 1:10) {
>   rpart(y ~ ., cp = foo[i], data = mydata)
>My problem is, I wish to save the 10 rpart objects into 10 different
>names, my.rpart1 ~ my.rpart10, for example.  But I'm not sure how to do

The first question is whether you really need different names. It's simpler 
to collect the results in a list; for example:

     result <- vector(mode='list', length=10)
     for(i in 1:10) result[[i]] <- rpart(y ~ ., cp = foo[i], data = mydata)

Even more simply, using lapply:

     result <- lapply(1:10, function(i) rpart(y ~ ., cp = foo[i], data = 

If you do need the results in separate variables, you could do something 
like the following:

     result <- lapply(1:10, function(i) eval(parse(text=
         paste('my.rpart', i, ' <- rpart(y ~ ., cp = foo[', i, '], data = 
mydata)', sep=""))))

(Obviously this is much more error-prone; make sure that I've got the 
quotes and commas in the right place.)

I hope that this helps,
John Fox
Department of Sociology
McMaster University
Hamilton, Ontario, Canada L8S 4M4
email: jfox at mcmaster.ca
phone: 905-525-9140x23604
web: www.socsci.mcmaster.ca/jfox

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

More information about the R-help mailing list