I was trying to replicate one CRM simulation. The following code works but
seems redundant so I want to create a loop.

####O'Quigley CRM example 1#####
f1<-function(x) exp(-x)
dose<-c(-1.47,-1.1,-.69,-.42,0.0,.42)
p<-c(0.05,0.1,0.2,0.3,0.5,0.7)
y<-c(0,0,1,0,1,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,1,1)

f2<-function(x) f1(x)*(1-0.2^x)
denom2<-integrate(f2,0,100)$value
alpha2<-integrate(function(x) x*f2(x),0,100)$value/denom2
id<-which.min(abs(-.5*log(0.2^(-1/alpha2)-1)-dose))  ### id is used to
locate the next prob.

f3<-function(x) f2(x)*(1-.3^x)
denom3<-integrate(f3,0,100)$value
alpha3<-integrate(function(x) x*f3(x),0,100)$value/denom3
id<-which.min(abs(-.5*log(0.2^(-1/alpha3)-1)-dose))

f4<-function(x) f3(x)*.3^x
denom4<-integrate(f4,0,100)$value
alpha4<-integrate(function(x) x*f4(x),0,100)$value/denom4
id<-which.min(abs(-.5*log(0.2^(-1/alpha4)-1)-dose))

2010/3/5 Uwe Ligges <ligges@statistik.tu-dortmund.de>

>
>
> On 05.03.2010 01:40, Carl Witthoft 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)
>>
>
> Since in this case foo(x) is independent of i, you are wasting resources.
> Moreover you could calculate it for a whole matrix at once. Say you want to
> calculate this for i=1, ..., n with n=5 for some (here pseudo random x),
> then you could do it simpler after defining some data as in:
>
> set.seed(123)
> x <- rnorm(10)
> n <- 5
>
>
> using the single and probably most efficient line:
>
>  outer(x, 1:n, "^") * exp(-x)
>
> or if x is a length 1 vector then even simpler:
>
> set.seed(123)
> x <- rnorm(1)
> n <- 5
>
>  x^(1:5) * exp(-x)
>
> But we still do not know if this is really the question ...
>
> Uwe Ligges
>
>
>
>
>> 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-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<http://www.r-project.org/posting-guide.html>
>> and provide commented, minimal, self-contained, reproducible code.
>>
>

	[[alternative HTML version deleted]]

