This is a textbook of when NOT to use a loop in R: rather make a function
that does what you want and use the replicate function to do it repeatedly.

f <- function(){
return(-1000*quantile(rnorm(250,0,0.2),0.95)
}

x = replicate(1e5,f())

There are your desired numbers.

Some general coding principles: firstly, you don't need to convert to time
series: quantile immediately undoes that so you've just wasted the time
doing the coercions each direction. Secondly, the quantiles of c*X are
exactly c times the quantiles of X so you can cut down on the
multiplications needed by doing the -1000 multiplication after
quantilization.

Specific to R: don't use loops unless entirely necessary. (And it's hardly
ever necessary) -- replicate is great for repeated operations, apply is
great for looping "over" thins.

More broadly, what do you intend to do with the v95 values? There are
probably much more efficient ways to get the desired numbers or even closed
form results. I believe this idea is widely studied as VaR in finance.

Feel free to write back if we can be of more help.

Hope this helps,

Michael Weylandt

On Fri, Aug 5, 2011 at 11:35 AM, UnitRoot <akhussanov@gmail.com> wrote:

> Hi,
> Can someone help me out to create a (for?) loop for the following
> procedure:
>
> x=rnorm(250,0,0.02)
> library(timeSeries)
> x=timeSeries(x)
> P=1000
> loss=-P*x
> loss
> v95=quantile(loss,0.95)
> v95
>
> I would like to generate 100 000 v95 values.
> Also, can anybody name a source where I could read up basic programming in
> R?
> Thank you.
>
> --
> View this message in context:
> http://r.789695.n4.nabble.com/Loop-noob-question-tp3721500p3721500.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help@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.
>

	[[alternative HTML version deleted]]

