当使用浏览器调试在多个级别调用其他函数的函数时,通常很难知道要进入哪个级别来检查特定变量。当函数包含apply
, sapply
,lapply
调用产生中间级别时,它是神秘的。有没有办法在堆栈的所有级别上按名称搜索变量?
假设我有以下功能,在f3
. 我会假设当进入第 5 级时,我应该能够以某种方式使用pos
orenvir
参数列出我当前所在环境之上的任何环境的内容,但我不知道如何。例如,我该如何寻找v2
?
f1 <- function(){
v1 <- 1
sapply(1:3, f2)
}
f2 <- function(...){
v2 <- 2
f3()
}
f3 <- function(){
v3 <- 3
stop("Oh no!")
}
> options(error=recover)
> f1()
Error in f3() : Oh no!
Enter a frame number, or 0 to exit
1: f1()
2: #3: sapply(1:3, f2)
3: lapply(X = X, FUN = FUN, ...)
4: FUN(1:3[[1]], ...)
5: #3: f3()