# [R] Is it possible to recursively update a function?

David Winsemius dwinsemius at comcast.net
Fri Mar 5 21:30:55 CET 2010

```On Mar 5, 2010, at 11:06 AM, Seeker wrote:

> Thanks for your suggestion, Carl. Actually I am looking for a series
> of functions like these
>
> exp(-x)*.5^x
> exp(-x)*.5^x*(1-.4^x)
> exp(-x)*.5^x*(1-.4^x)*(1-.3^x)
> where(.5,.4,.3...) are from the coming results.

Those are not really functions but rather "expressions". Does this help?

> tvalues <- c(.5,.4,.3)
> expr <- substitute(exp(-x)*t1^x*(1-t2^x)*(1-t3^x),
list(t1=tvalues, t2=tvalues, t3=tvalues) )
> expr
# exp(-x) * 0.5^x * (1 - 0.4^x) * (1 - 0.3^x)

I suppose they could be wrapped up into functions but would need to be
further wrapped inside eval() or else they will return an expression
string.

> tfn <- function(x) eval( substitute(exp(-x)*t1^x*(1-t2^x)*(1-t3^x),
list(t1=tvalues, t2=tvalues,
t3=tvalues) ) )

> tfn(.5)
 0.07129393
> tfn2 <- function(x) exp(-x) * 0.5^x * (1 - 0.4^x) * (1 - 0.3^x)
>
> tfn2(.5)
 0.07129393

--
David.

>
> I am not sure how to construct such an irregular fucntion vector.
>
> On Mar 4, 6:40 pm, Carl Witthoft <c... at witthoft.com> wrote:
>> My foolish move for this week: I'm going to go way out on a limb and
>> guess what the OP wanted was something like this.
>>
>> i=1, foo = x*exp(-x)
>>
>> i=2, foo= x^2*exp(-x)
>> i=3, foo = x^3*exp(-x)
>> .
>> .
>> .
>>
>> In which case he really should create a vector bar<-rep(na,5) ,
>> and then inside the loop,
>>
>> bar[i]<-x^i*foo(x)
>>
>> Carl
>>
>> quoted material:
>> Date: Thu, 04 Mar 2010 11:37:23 -0800 (PST)
>>
>> I need to update posterior dist function upon the coming results and
>> find the posterior mean each time.
>>
>> On Mar 4, 1:31 pm, jim holtman <jholt..._at_gmail.com> wrote:
>>  > What exactly are you trying to do?  'foo' calls 'foo' calls
>> 'foo' ....
>>  >  How did you expect it to stop the recursive calls?
>>  >
>>  >
>>  >
>>  >
>>  >
>>  > On Thu, Mar 4, 2010 at 2:08 PM, Seeker <zhongm..._at_gmail.com>
>> wrote:
>>  > > Here is the test code.
>>  >
>>  > > foo<-function(x) exp(-x)
>>  > > for (i in 1:5)
>>  > > {
>>  > > foo<-function(x) foo(x)*x
>>  > > foo(2)
>>  > > }
>>
>> ______________________________________________
>> R-h... at r-project.org mailing listhttps://stat.ethz.ch/mailman/
>> listinfo/r-help
>> and provide commented, minimal, self-contained, reproducible code.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help