R
1 # 1 1,0,1,1 3 findruns1<-function(x,k){ #x 2 2 n<-length(x) runs<-vector(length=n) count<-0 for(i in 1:(n-k+1)){ if(all(x[i:i+k-1]==1)){ count<-count+1 runs[count]<-i } } if(count>0){ runs<-runs[1:count] } else runs<-NULL return(runs) } findruns1(c(1,0,0,1,1,0,0,1,1,1),2) [1] 3 4 7 8 9
print() function(x,k){ print(x) # x print(k) # k n<-length(x) print(n) # n runs<-vector(length=n) count<-0 for(i in 1:(n-k+1)){ if(all(x[i:i+k-1]==1)){ count<-count+1 runs[count]<-i print(runs) # } } if(count>0){ runs<-runs[1:count] print(runs) # } else runs<-NULL return(runs) }
findruns1(c(1,0,0,1,1,0,0,1,1,1),2) [1] 1 0 0 1 1 0 0 1 1 1 # [1] 2 # [1] 10 # [1] 3 0 0 0 0 0 0 0 0 0 # [1] 3 4 0 0 0 0 0 0 0 0 [1] 3 4 7 0 0 0 0 0 0 0 [1] 3 4 7 8 0 0 0 0 0 0 [1] 3 4 7 8 9 0 0 0 0 0 [1] 3 4 7 8 9 [1] 3 4 7 8 9 x all(x[i:i+k-1]==1) i+k-1
使 R print() 使 R 便 R dubug(f) browser() debug(f) f() f() undebug(f) 2.10 debugonce()
    dedbug > Browse[d]>(d ) : n( next):   R , C Turbo C trace into c( continue): C Turbo C step over where:  Q:  退 brower R R :   使 browser R R
1.debugonce ()
debugonce(findruns1) findruns1(c(1,0,0,1,1,0,0,1,1,1),2) …. Browse[2]> x [1] 1 0 0 1 1 0 0 1 1 1 Browse[2]> debug at findruns1.R#2: n <- length(x) Browse[2]> debug at findruns1.R#3: runs <- vector(length = n) Browse[2]> print(n) [1] 10 Browse[2]> debug at findruns1.R#4: count <- 0 Browse[2]> debug at findruns1.R#5: for (i in 1:(n - k + 1)) { if (all(x[i:i + k - 1] == 1)) { count <- count + 1 runs[count] <- i } }
Browse[2]> debug at findruns1.R#5: i Browse[2]> debug at findruns1.R#6: if (all(x[i:i + k - 1] == 1)) { count <- count + 1 runs[count] <- i } Browse[2]> x[i:i+k-1] # [1] 0 Browse[2]> i:i+k-1 [1] 2 Browse[2]> i [1] 1 Browse[2]> k [1] 2 Browse[2]> Q # 退
source("findruns.R") > findruns(c(1,0,0,1,1,0,0,1,1,1),2) [1] 4 8 9 qs<-function(x){ if(length(x)<=1)return(x) pivot<-x[1] therest<-x[-1] sv1<-therest[therest<pivot] sv2<-therest[therest>=pivot] sv1<-qs(sv1) sv2<-qs(sv2) return(c(sv1,pivot,sv2)) } a<-c(8,7,2,9,45,32)
source("qs.R") > a<-c(8,7,2,9,45,32) > qs(a) [1] 2 7 8 9 32 45 debugonce(qs) > qs(a) debugging in: qs(a) debug at qs.R#1: { if (length(x) <= 1) return(x) pivot <- x[1] therest <- x[-1] sv1 <- therest[therest < pivot] sv2 <- therest[therest >= pivot] sv1 <- qs(sv1) sv2 <- qs(sv2) return(c(sv1, pivot, sv2)) }
Browse[2]> debug at qs.R#2: if (length(x) <= 1) return(x) Browse[2]> debug at qs.R#2: NULL Browse[2]> x [1] 8 7 2 9 45 32 Browse[2]> length(x) [1] 6 Browse[2]> debug at qs.R#3: pivot <- x[1] Browse[2]> pivot Error: object 'pivot' not found Browse[2]> debug at qs.R#4: therest <- x[-1] Browse[2]> pivot [1] 8 Browse[2]> debug at qs.R#5: sv1 <- therest[therest < pivot] Browse[2]> therest [1] 7 2 9 45 32
Browse[2]> debug at qs.R#6: sv2 <- therest[therest >= pivot] Browse[2]> sv1 [1] 7 2 Browse[2]> debug at qs.R#7: sv1 <- qs(sv1) Browse[2]> sv2 [1] 9 45 32 Browse[2]> debug at qs.R#8: sv2 <- qs(sv2) Browse[2]> sv1 [1] 2 7 Browse[2]> debug at qs.R#9: return(c(sv1, pivot, sv2)) Browse[2]> sv2 [1] 9 32 45 Browse[2]> [1] 2 7 8 9 32 45
2. browser()
:       R browser() browser() debug    :       browser() browser() debug 1. countsum <- function(count)   2. {   3.     sum <- 0   4.     for (i in 1:count)   5.     {   6.         sum <- sum + i   7.     }   8.     browser()   9.     return (sum)   10. }   11. results <- countsum(100)   12. print(results)   debugonce()
3. debug()
:        debug(fun)             fun fun()     :        undebug(fun)        fun() debug() debugonce() : debugonce() debug() undebug()