Skip to content

i param in "for" loop does not takes zeros?

3 messages · Rich FitzJohn, Francisco J. Zagmutt

#
Hi all

Is there any reason why the parameter i in a "for" loop ignores a value of 
zero?  For example

sim=c()
p=.2
for(i in 0:5)
  {sim[i]=dbinom(i,5,p)
  }

sim
[1] 0.40960 0.20480 0.05120 0.00640 0.00032

In this example the quantile i= 0 was ignored since
dbinom(0,5,p)
[1] 0.32768


The same behaviour occurs if I use a while loop to perform the same 
calculation:
sim=c()
p=.2
i=0
while(i <6)
  {sim[i]=dbinom(i,5,p)
  i=i+1
  }
sim
[1] 0.40960 0.20480 0.05120 0.00640 0.00032

How can I perform a loop passing a zero value parameter?  I know I can use 
an if statement for i<=0 but I was wondering why the loop is ignoring the 
zero value.

Many thanks!

Francisco
#
The for loop is not ignoring the zero at all, but the assignment is,
since R indexes starting at 1, not zero.
numeric(0)

To run this loop this way, you need to add one to the index:
for ( i in 0:5 )
  sim[i+1] <- dbinom(i, 5, p)

However, you'd be better off passing your vector of values directly to
dbinom():
[1] 0.32768 0.40960 0.20480 0.05120 0.00640 0.00032
[1] TRUE

Cheers,
Rich
On 4/14/05, Francisco J. Zagmutt <gerifalte28 at hotmail.com> wrote:

  
    
#
Thanks to Rich, Douglas and Erin.  Off course the problem was the index!  I 
was looking at the wrong place!! Thanks for your help!

Francisco