Debugging 如何取消跟踪多个函数
如果我有几个相互关联的函数,那么跟踪它们之间的路径会很有用。也就是说,每次R进入或离开某个函数时,使用Debugging 如何取消跟踪多个函数,debugging,r,trace,Debugging,R,Trace,如果我有几个相互关联的函数,那么跟踪它们之间的路径会很有用。也就是说,每次R进入或离开某个函数时,使用trace函数给出一条消息。比如说, f <- function() g() g <- function() h() h <- function() { if(runif(1) > 0.3) g() else 99 } trace_my_fns <- function() { fn_names <- c("f", "g", "h") invisib
trace
函数给出一条消息。比如说,
f <- function() g()
g <- function() h()
h <- function()
{
if(runif(1) > 0.3) g() else 99
}
trace_my_fns <- function()
{
fn_names <- c("f", "g", "h")
invisible(trace(
fn_names,
tracer = quote(0),
exit = quote(0),
where = globalenv()
))
}
trace_my_fns()
set.seed(4)
f()
如果我直接在每个函数上调用untrace,例如在commmand行调用untrace(f)
,它就会工作。我应该如何创建一个函数来同时取消对所有函数的跟踪?好的,改为:
untrace_my_fns <- function()
{
fn_names <- c("f", "g", "h")
invisible(untrace(
fn_names,
where = globalenv()
))
}
untrace_my_fns()
set.seed(4)
f() # no more tracing...
取消追踪我的好吧,这太尴尬了。非常漂亮,谢谢。我现在要去拿一个小猎鹰护照。
f
body(f)
untrace_my_fns <- function()
{
fn_names <- c("f", "g", "h")
invisible(untrace(
fn_names,
where = globalenv()
))
}
untrace_my_fns()
set.seed(4)
f() # no more tracing...