Hi,
On Wednesday, July 11, 2012, darnold wrote:
> All,
>
> How come i=1 in the first case, but i=2 in the second case. The second case
> seems to work, but the first case does not.
It dos work: whne your code gets to browser() R calls that function and
passes it the argument given. If you expect that argument to control when
browser() is called, you need to reread ?browser and rethink how you expect
R to work.
In the second instance, the conditional is checked before R gets to the
browser() command, and it is only called if the condition is met.
So both examples work as the R designers intend, that's just not how you
thought it should work.
Sarah
> David.
>
> > findruns <- function(x,k) {
> + n <- length(x)
> + runs <- NULL
> + for (i in 1:(n-k+1)) {
> + if (all(x[i:(i+k-1)]==1)) runs <- c(runs,i)
> + browser(i>1)
> + }
> + return(runs)
> + }
> > x=c(1,1,0,0,1,1,1)
> > findruns(x,2)
> Called from: findruns(x, 2)
> Browse[1]> i
> [1] 1
> Browse[1]> Q
> > findruns <- function(x,k) {
> + n <- length(x)
> + runs <- NULL
> + for (i in 1:(n-k+1)) {
> + if (all(x[i:(i+k-1)]==1)) runs <- c(runs,i)
> + if (i>1) browser()
> + }
> + return(runs)
> + }
> > findruns(x,2)
> Called from: findruns(x, 2)
> Browse[1]> i
> [1] 2
> Browse[1]>
>
--
Sarah Goslee
http://www.stringpage.com
http://www.sarahgoslee.com
http://www.functionaldiversity.org
[[alternative HTML version deleted]]