I am not entirely clear on what you want to do but if you simply want a cumulative sum use cumsum:
cumsum(rep(100, 5)) + 10000 or to do cumsum using Reduce and + try: Reduce("+", rep(100, 5), init = 10000, acc = TRUE) On Sat, Jul 18, 2009 at 3:59 PM, Mark Knecht<markkne...@gmail.com> wrote: > 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.