[R] lapply - value changes as parameters to function?

Bert Gunter gunter.berton at gene.com
Fri Sep 18 22:09:27 CEST 2009


 It **IS** stated explicitly, though perhaps not so obviously,  already in
the help file,  In the "Note" section at the end it says:

"... This means that the recorded call is always of the form FUN(X[[0L]],
...), with 0L replaced by the current integer index. ..."

So you need to read more carefully ...

Bert Gunter
Genentech Nonclinical Statistics

-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On
Behalf Of Mark Knecht
Sent: Friday, September 18, 2009 11:55 AM
To: jim holtman
Cc: r-help; Phil Spector
Subject: Re: [R] lapply - value changes as parameters to function?

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 <jholtman at 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 <markknecht at 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
>> <spector at 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
>>>                                         spector at 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 at 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 at 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 at 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.




More information about the R-help mailing list