3
如果我有幾個相互關聯的功能,那麼跟蹤通過它們的路徑會很有用。每次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")
invisible(trace(
fn_names,
tracer = quote(0),
exit = quote(0),
where = globalenv()
))
}
trace_my_fns()
set.seed(4)
f()
當我完成此跟蹤時,我需要取消跟蹤它們。
untrace_my_fns <- function()
{
fn_names <- c("f", "g", "h")
invisible(trace(
fn_names,
where = globalenv()
))
}
untrace_my_fns()
由於某種原因,這並不是正確地處理功能。看到這一點,看看
f
body(f)
如果我直接在條命令行調用untrace各項功能,例如untrace(f)
,它的工作原理。我應該如何創建一個功能來一次性取消我所有的功能?
好吧,這很尷尬。非常醒目,謝謝。我現在要去做一個小小的falcepalm。 – 2012-04-13 06:38:21