Hi Ryan, 

I don't think you need the outer loop, loops are worth avoiding if you can 
possibly can because they are inefficient, have a look at this dplyr tutorial 
(https://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html) which 
should be able to achieve what your outer loop is currently doing. 
Vectorisation (applying a calculation to a whole array) should be able to 
process your innerloop. 

Good luck

Rhydwyn 


-----Original Message-----
From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of Vermilio, Ryan
Sent: Friday, 4 December 2015 9:43 AM
To: r-help@r-project.org
Subject: [R] Question Regarding a nested for loop in R


Hello there,

I'm an R novice and am trying to figure out how to create an external for loop. 
 My current loop iterates 15 times and stores the resulting values in 3 
separate vectors.  What I need is to create an outside loop that will run 
internal loop 4 times, sum the resulting vectors for each, and then store the 
sum of each in a vector of length 4 for each investment.

Right now, the target vector has the same value in each position, which is what 
I'm trying to fix.

Here's what I have at this point:

Inv1Returns <- c(0, 1000, -500, 500)
Inv2Returns <- c(0, -9000, 30000, 10000) Inv3Returns <- c(0, 4000, -1000, -2000)

random = runif(15, 0, 1)

Inv1Outcome = NULL
Inv2Outcome = NULL
Inv3Outcome = NULL

Inv1Total = NULL
Inv2Total = NULL
Inv3Total = NULL

for (j in 1:4)

{

for (i in 1:15 )

{

  Inv1Outcome[i] = if (random[i] <= .25){Inv1Returns[1]}
  else if (random[i] > .25 & random[i] <= .50){Inv1Returns[2]}
  else if (random[i] > .50 & random[i] <= .75){Inv1Returns[3]}
  else {Inv1Returns[4]}

  Inv2Outcome[i] = if (random[i] <= .20){Inv2Returns[1]}
  else if (random[i] > .20 & random[i] <= .30){Inv2Returns[2]}
  else if (random[i] > .30 & random[i] <= .70){Inv2Returns[3]}
  else {Inv2Returns[4]}

  Inv3Outcome[i] = if (random[i] <= .50){Inv3Returns[1]}
  else if (random[i] > .50 & random[i] <= .70){Inv3Returns[2]}
  else if (random[i] > .70 & random[i] <= .90){Inv3Returns[3]}
  else {Inv3Returns[4]}

}

Inv1Total = append(Inv1Total, sum(Inv1Outcome)) Inv2Total = append(Inv2Total, 
sum(Inv2Outcome)) Inv3Total = append(Inv3Total, sum(Inv3Outcome))

}

Inv1Total
Inv2Total
Inv3Total


Sincerely,

Ryan

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 
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.
__________________________________________________________________________________________________________
This email has been scanned for the NSW Ministry of Health by the Websense 
Hosted Email Security System.
Emails and attachments are monitored to ensure compliance with the NSW Ministry 
of health's Electronic Messaging Policy.
__________________________________________________________________________________________________________
_______________________________________________________________________________________________________
Disclaimer: This message is intended for the addressee named and may contain 
confidential information.
If you are not the intended recipient, please delete it and notify the sender.
Views expressed in this message are those of the individual sender, and are not 
necessarily the views of the NSW Ministry of Health.
_______________________________________________________________________________________________________
This email has been scanned for the NSW Ministry of Health by the Websense 
Hosted Email Security System.
Emails and attachments are monitored to ensure compliance with the NSW Ministry 
of Health's Electronic Messaging Policy.

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Reply via email to