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 <lig...@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]] ______________________________________________ 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.