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
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)
+ }
Called from: findruns(x, 2)
Browse[1]> i
[1] 2
Browse[1]>