[R] Returning combine output from R loop

Abdul Rahman bin Kassim (Dr.) rahmank at frim.gov.my
Fri May 31 10:43:33 CEST 2013


Dear Mr. Nello,

Thank you very much  for your prompt reply and solution to my question. I have tried the three options. Need to spend more  to understand do.cal function.

With best regards,

Abd Rahman
________________________________________
From: Blaser Nello [nblaser at ispm.unibe.ch]
Sent: Friday, May 31, 2013 4:12 PM
To: Abdul Rahman bin Kassim (Dr.); r-help at r-project.org
Subject: RE: [R] Returning combine output from R loop

In line with what you are doing now, but saving the intermediate results
you could use something like this.

a3 <- a0
for( i in 1:3)
{
  a1 <- a0$initial_size+a0$grow
  a2<- cbind(sp=a0$sp,initial_size=a1+i,yr=i)
  a3 <- cbind(a3, a2)
}
a3

However, I would suggest one of the following solutions instead. Which
one is best depends on what you want to do with the data after.

res1 <- do.call(cbind,c(a0,lapply(1:maxYears, function(k){
  data.frame(yr=k, size=a0$initial_size+k*a0$grow)
})))

res2 <- do.call(cbind,c(a0,lapply(1:maxYears, function(k){
  ans <- data.frame(a0$initial_size+k*a0$grow)
  names(ans) <- paste0("size.", k)
  ans
})))

res3 <- do.call(rbind,lapply(1:maxYears, function(k){
  cbind(id=1:nrow(a0), sp=a0$sp, yr=k, size=a0$initial_size+k*a0$grow)
}))
res3 <- res3[order(res3[,"id"], res3[,"yr"]),]


Best,
Nello



-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
On Behalf Of Abdul Rahman bin Kassim (Dr.)
Sent: Freitag, 31. Mai 2013 08:37
To: r-help at r-project.org
Subject: [R] Returning combine output from R loop

Dear R-User,

Appreciate any advice on producing combine  output from an R loop.
Planning to project the growth (grow) of  plant species (sp) from its
initia size (initial_size). Using the follwing example, how can I
produce the results combining the output from 3 iteration. The ouput a2
produce only the last iteration.

Thanks in advanced for your advice.
---------
  a0 <- data.frame(initial_size=sample(30,10),sp=gl(2,5,10),
  grow=as.numeric(as.character(gl(2,5,10)))*0.5)

  a2<-c(0)
  for( i in 1:3)
  {
  a1 <- a0$initial_size+a0$grow
  a2<- cbind(sp=a0$sp,initial_size=a1+i,yr=i)
  a2}

a2
---------

Abd Rahman




Dr. Abd Rahman Kassim
Program Kualiti Air
Bahagian Perhutanan & Alam Sekitar
Institut Penyelidikan Perhutanan Malaysia Kepong 52109 Selangor

Fax:03-62729852
Tel: 013-3380905/03-62797179
Email: rahmank at frim.gov.my

________________________________
For E-Mail Disclaimer, please click
here<http://www.frim.gov.my/v1/support/general/email_disclaimer.cfm>

        [[alternative HTML version deleted]]

______________________________________________
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 E-Mail Disclaimer, please click here<http://www.frim.gov.my/v1/support/general/email_disclaimer.cfm>



More information about the R-help mailing list