# Re: [R] How to remove double loop?

From: Ray Brownrigg <Ray.Brownrigg_at_mcs.vuw.ac.nz>
Date: Thu, 20 Mar 2008 08:31:27 +1300

> OVal <- matrix(0, n+1, n+1)
>
> for(i in 0:n){
+ OVal[i+1, n+1] <- max(Val[i+1, n+1]-K, 0) + }
>
> for(i in seq(n,1, by=-1)){

```+     for(j in 0:(i-1)){
+         OVal[j+1, i] <- a*((1-p)*OVal[j+1, i+1]+p*OVal[j+2, i+1])
+     }
+ }
```

>

On Thu, 20 Mar 2008, Jonas Malmros wrote:
> Bill, Alberto, Gabor,
> Thank you for answering my question. Now I learned about outer() function.
> That was a straightforward example.
>
> But what if I had a matrix, where the last column was filled with
> values first (again, a for loop), and the rest was filled by using a
> double loop?
>
> OVal <- matrix(0, n+1, n+1)
>
> for(i in 0:n){
> OVal[i+1, n+1] <- max(Val[i+1, n+1]-K, 0)
> }
>
> for(i in seq(n,1, by=-1)){
> for(j in 0:(i-1)){
> OVal[j+1, i] <- a*((1-p)*OVal[j+1, i+1]+p*OVal[j+2, i+1])
> }
> }
>
> Even if I leave the first simple for loop as it is, is there a more
> efficient way to program the double loop part now that OVal is used
> within the function itself?
> It is pretty easy to write for loops, but it is very hard to write