Hi Gabor, Thanks for the pointer to Reduce. It looks quite interesting. I made an attempt to use it but I'm not clear how I would move the output of the Reduce execution on row 1 to become the Initial value on Row 2. In this output:
> MyDF Event Initial Offset Final 1 1 10000 -31 9969 2 2 0 10 10 3 3 0 -133 -133 4 4 0 -91 -91 5 5 0 -145 -145 6 6 0 74 74 7 7 0 4 4 8 8 0 19 19 9 9 0 -120 -120 10 10 0 47 47 > It seems that the intended use of Reduce is for when I have all the values previously set up in the array and then want to execute the same commands down through the array. That is very powerful and makes sense in most cases, but in my case I have to calculate the values on a line-by-line basis where the execution of Reduce on row 1 (the 9969) must become the Initial value on row 2 before Reduce it's work on row 2. I think I'm not fully grasping your intentions here. Code follows. Thanks, Mark InitialValue = 10000 MyDF = data.frame(cbind(Event = 1:10, Initial = 0, Offset = 0 , Final = 0)) MyDF$Offset = round(100*rnorm(10), 0) MyDF$Initial[1] = InitialCash MyDF AddPL = function(x) Reduce("+", x[2:3]) MyDF$Final = AddPL(MyDF) MyDF On Fri, Jul 17, 2009 at 9:02 PM, Gabor Grothendieck<ggrothendi...@gmail.com> wrote: > See ?Reduce > > On Fri, Jul 17, 2009 at 11:10 PM, Mark Knecht<markkne...@gmail.com> wrote: >> Hi, >> Is it possible to make something like the following code actually >> work? My goal in this example would be that I'd see results like >> >> 1 10000 10100 >> 2 10100 10200 >> 3 10200 10300 >> 4 10300 10400 >> >> In real usage the function would obviously do a lot more work, but the >> question I cannot answer myself yet is whether the apply can return a >> value from the work on one row and then use that value as the input to >> the function for the next row? >> >> Thanks, >> Mark >> >> >> ReturnLast = function (.row, NextInitial=100) { >> .row$Initial = as.numeric(NextInitial) >> .row$Final = as.numeric(.row$Initial+100) >> } >> >> MyStart = 10000 >> X = data.frame(cbind(Event = 1:10, Initial = 0, Final = 0)) >> >> X >> >> MyStart = apply(X, 1, ReturnLast( X, MyStart)) >> >> X >> >> ______________________________________________ >> 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. >> > ______________________________________________ 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.