Thanks Jim. That did the trick. I had wondered in passing about that as all the examples in the ?lapply page were pretty simple and each time it was the first argument. However I didn't read that this was a requirement so I didn't go there. Is this really stated and I just cannot see it or possibly should some extra verbiage be added. (Heck - it's Open Source - guess I could do it myself and submit it to who ever manages that stuff!)
Again, thanks! Cheers, Mark On Fri, Sep 18, 2009 at 11:06 AM, jim holtman <jholt...@gmail.com> wrote: > Change the order of the parameters in your function so that Lookback > is the first one. The first parameter of the lapply is what is passed > to the function as its first parameter. Now just have > > ResultList <- lapply(x, DoAvgCalcs, IndexData=IndexData, > SampleSize=TestSamples, Iteration=TestIterations) > > > On Fri, Sep 18, 2009 at 1:32 PM, Mark Knecht <markkne...@gmail.com> wrote: >> Phil, >> Thanks for the reply. Your suggestion is actually the one I started >> with (assuming I'm understanding you) but I didn't seem to even get >> down into my function, or the error message is from other place within >> my function that I haven't discovered yet: >> >>> x = seq(5:20) >>> ResultList = lapply(x, DoAvgCalcs, IndexData, Lookback=x, >>> SampleSize=TestSamples , Iterations=TestIterations ) >> Error in rep(NA, k) : invalid 'times' argument >>> >> >> I should write some fake code that gives you all the depth so we >> could jsut run it. If no on eelse sees the answer then I'll be back >> later with more code that completely runs. >> >> Thanks, >> Mark >> >> >> On Fri, Sep 18, 2009 at 10:16 AM, Phil Spector >> <spec...@stat.berkeley.edu> wrote: >>> Mark - >>> The "l" in lapply refers to that fact that it will *return* >>> a list, not that it wants a list for input. You could input a list, but >>> then each element of the list would be one of the values you wanted >>> processed. So I think you want >>> >>> x = seq(5:20) >>> ResultList = lapply(x, DoAvgCalcs, IndexData, Lookback=x, >>> SampleSize=TestSamples , Iterations=TestIterations ) >>> >>> This will return a list whose elements are the result of calling >>> the DoAvgCalcs function with each value contained in x. If they >>> were all the same length, and you wanted them simplified to a matrix, >>> you could use sapply (s for simplify) instead of lapply (l for list). >>> >>> - Phil Spector >>> Statistical Computing Facility >>> Department of Statistics >>> UC Berkeley >>> spec...@stat.berkeley.edu >>> >>> >>> On Fri, 18 Sep 2009, Mark Knecht wrote: >>> >>>> Hi, >>>> I'm trying to get better at things like lapply but it still stumps >>>> me. I have a function I've written, tested and debugged using >>>> individual calls to the function, ala: >>>> >>>> ResultList5 = DoAvgCalcs(IndexData, Lookback=5, >>>> SampleSize=TestSamples , Iterations=TestIterations ) >>>> ResultList8 = DoAvgCalcs(IndexData, Lookback=8, >>>> SampleSize=TestSamples , Iterations=TestIterations ) >>>> ResultList13 = DoAvgCalcs(IndexData, Lookback=13, >>>> SampleSize=TestSamples , Iterations=TestIterations ) >>>> ResultList21 = DoAvgCalcs(IndexData, Lookback=21, >>>> SampleSize=TestSamples , Iterations=TestIterations ) >>>> >>>> The function returns a list of numbers which I use for processing >>>> later. I'd like to run this on a longer list (100's of values for >>>> Lookback) so my thought was to try lapply but so far I cannot get the >>>> darn thing right. >>>> >>>> Let's say I want to run the function on a string of values: >>>> >>>> BarTestList = list(seq(5:20)) >>>> >>>> So my thought was something like: >>>> >>>> x = list(seq(5:20)) >>>> ResultList = lapply(x, DoAvgCalcs, IndexData, Lookback=x, >>>> SampleSize=TestSamples , Iterations=TestIterations ) >>>> >>>> which fails down lower complaining that what it's receiving for >>>> Lookback isn't an integer: >>>> >>>>> x = list(seq(5:20)) >>>>> ResultList = lapply(x, DoAvgCalcs, IndexData, Lookback=x, >>>>> SampleSize=TestSamples , Iterations=TestIterations ) >>>> >>>> Error in MyLag(df$Close, Lookback) : >>>> (list) object cannot be coerced to type 'integer' >>>>> >>>> >>>> Can someone suggest how to do this correctly? >>>> >>>> Thanks, >>>> Mark >>>> >>>> ______________________________________________ >>>> 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. >> > > > > -- > Jim Holtman > Cincinnati, OH > +1 513 646 9390 > > What is the problem that you are trying to solve? > ______________________________________________ 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.