[R] Getting a vector result from a computed index

Ben Tupper btupper at bigelow.org
Sat Mar 23 05:01:00 CET 2013


Hi,

On Mar 22, 2013, at 11:09 PM, Justin Long wrote:

> Greetings,
> 
> I confess to being new to R, which I am exploring for some simulation
> modeling purposes. I am a long time programmer in PHP.
> 
> I am having some trouble getting over the "steep learning curve" with
> some very basic things which are probably just little "a-ha" things in
> R. I have hunted and hunted through the manual and cannot figure this
> one out, so I am appealing for help.
> 
> I have the following program:
> 
> results <- replicate(10000,0)
> 
> for (year in 2000:2050) {
> print(year);
> for (i in 1:10000) {
> x=results[i];
> if (x == 0) {
> prev = results[i-1];
> next = results[i+1];
> prob=0.1;
> if (i>=1) {
> if (prev==1) { prob=prob+0.4; }
> }
> if (i<10000) {
> if (next==1) { prob=prob+0.4; }
> }
> y=runif(1,0,1);
> if (y<prob) { x=1; }
> results[i]=x;
> }
> }
> }
> 
> No matter how I try this (and I've tried a number of variations), I
> get an error similar to
> 
> Error in next = results[i + 1] : invalid (NULL) left side of assignment
> 
> I need to be able to loop through the results vector and compare the
> previous/next items in the list to the current one. Is that possible?
> What am I missing?


I'm not very clear on what you are trying in the above code block, but comparing neighbor values is very easy.

n <- 10
x <- floor(runif(n, min = 1, max = 10))
dx <- diff(x)
> x
 [1] 6 3 2 4 8 8 2 2 4 2
> dx
[1] -3 -1  2  4  0 -6  0  2 -2

Is that what you are aiming for?

Also, 'next' is a reserved word in R, that might be why an error is raised.  See ?next  

Even if you could get past that, you'll get unexpected results if the index [i-1] falls to less than 1 or the index [i+1] rises to greater than the length of results.

> x[0]
numeric(0)
> x[101]
[1] NA

Cheers,
Ben



Ben Tupper
Bigelow Laboratory for Ocean Sciences
60 Bigelow Drive, P.O. Box 380
East Boothbay, Maine 04544
http://www.bigelow.org



More information about the R-help mailing list