Re: [R] Building a random walk vector

From: Dirk Eddelbuettel <edd_at_debian.org>
Date: Fri 04 Aug 2006 - 11:56:17 EST

On 4 August 2006 at 01:17, Matthew Wilson wrote:
| I'm studying R in my free time. I want to build a vector where each
| element is equal to the element before it in the sequence plus some
| random tweak.
|
| In python, I would write:
|
| vec = [100] * 50 # make a 50-element list with each element set to 100
| from random import randint
| for i, v in enumerate(vec):
| if i is not 0: # if we're not on the first element
| vec[i] = vec[i-1] + randint(-2, 2)
|
| I suspect R has some fancier way of doing this. How to?

Yup, cumsum() is your friend. You only need the first scalar of 100, vectorisation does the rest. Try

> set.seed(12345) 
> Z <- 100 + cumsum(runif(50,-2,2))
> summary(Z)

   Min. 1st Qu. Median Mean 3rd Qu. Max.   98.54 100.80 102.30 102.10 103.40 105.70 > plot(Z, type='l')

Lastly, I think N(0, some_sd) is more customary that U(-2,2) but that is easy to change.

Cheers, Dik

-- 
Hell, there are no rules here - we're trying to accomplish something. 
                                                  -- Thomas A. Edison

______________________________________________
R-help@stat.math.ethz.ch 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.
Received on Fri Aug 04 13:04:09 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Fri 04 Aug 2006 - 14:17:45 EST.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.