Re: [R] Building a random walk vector
Matthew Wilson matt at overlook.homelinux.net writes: 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. You will probably get many answers to this, but I think vec - 100+c(0,cumsum(runif(49,-2,2))) works. Ben Bolker __ 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.
[R] Building a random walk vector
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? TIA -- A better way of running series of SAS programs: http://overlook.homelinux.net/wilsonwiki/SasAndMakefiles __ 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.
Re: [R] Building a random walk vector
On 8/3/2006 9:17 PM, 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? Assuming randint(-2, 2) gives a value uniform on (-2, 2) a quick way to do what you want is vec - 100 + c(0, cumsum(runif(49, -2, 2))) Duncan Murdoch __ 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.
Re: [R] Building a random walk vector
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. MedianMean 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.