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.

Reply via email to