[R] How to remove double loop?
Ray Brownrigg
Ray.Brownrigg at mcs.vuw.ac.nz
Wed Mar 19 20:31:27 CET 2008
Read the posting guide (the bit about reproducible code):
> 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)
+ }
Error: object "Val" not found
>
> 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])
+ }
+ }
Error: object "p" not found
>
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
> computationally optimal code. :-( Could you please help me with the
> above one, if possible?
More information about the R-help
mailing list