ブラウザを使用して他の関数を多くのレベルで呼び出す関数をデバッグする場合、特定の変数を検査するためにどのレベルを入力するのかを知ることは難しいことがあります。関数がapply
,sapply
,lapply
の中間レベルを生成すると、それは意味が分かりません。スタックのすべてのレベルで変数を名前で検索する方法はありますか?ブラウザを使用しているときに呼び出しスタック内のオブジェクトを検索する
ここで、私はf3
にエラーを生成する以下の機能を持っているとします。私は、レベル5に入ると、私が現在使っている環境の上に、何らかの形でpos
またはenvir
引数を使って、どのような環境のコンテンツもリストできるはずだと思います。 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()
で変数を含むフレームを検索して、あなたの例では、コールスタックの各レベルの名前空間で、非常にエレガントに見えることができ、ありがとうございました! – Backlin