Christophe Pallier <[EMAIL PROTECTED]> writes:

> Fred J. wrote:
> 
> >I need to generate a data set based on this equation
> >X(t) = 3.8x(t-1) (1-x(t-1)) + e(t), where e(t) is a
> >N(0,0,001) random variable
> >I need say 100 values.
> >
> > How do I do this?
> 
> I assume X(t) and x(t) are the same (?).
> 
> f<-function (x) { 3.8*x*(1-x) + rnorm(1,0,.001) }
> v=c()
> x=.1 # starting point
> for (i in 1:100) { x=f(x); v=append(v,x) }
> 
> There may be smarter ways...

Yes, but the only really crucial one is to avoid the inefficient append  by
preallocating the v: 

v <- numeric(100)
x <- .1 ; for (i in 1:100) { x <- f(x); v[i] <- x }

apart from that you can use implicit loops:

x <- .1 ; v <- sapply(1:100, function(i) x <<- f(x))

or

z <- .1 ; v <- replicate(100, z <<- f(z))

(You cannot use x there because of a variable capture issue which is a
bit of a bug. I intend to fix it for 1.9.0.)

-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - ([EMAIL PROTECTED])             FAX: (+45) 35327907

______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to