假设我刚刚调用了一个函数f,并且在函数的某处发生了错误.我只是希望能够在错误发生之前检查出不同变量的值.  
假设我的直觉告诉我这是一个小错误,所以我懒得使用debug(f)而且懒得插入browser()功能的部分我认为出错了.而且我懒得开始print()发表声明.
这是一个例子:
x <- 1:5
y <- x + rnorm(length(x),0,1)
f <- function(x,y) {
  y <- c(y,1)
  lm(y~x)
}
调用f(x,y)我们得到以下错误:
Error in model.frame.default(formula = y ~ x, drop.unused.levels = TRUE) : 
  variable lengths differ (found for 'x')
在这个例子中,我想要在lm()调用之前获取环境的状态; 这样我可以打电话x,y看看他们的长度是不同的.(这个例子可能太简单了,但我希望它可以解决这个问题.)
Chr*_*ois 26
正如这里指出的那样,有一种简单的方法可以做到这一点,我认为这个技巧有可能改善生活.
首先,称之为:
options(error=recover)
现在,当我们打电话时,我们f(x,y)可以选择一个环境来恢复.在这里,我选择了选项1,它打开了一个调试器,让我在lm()调用前调用变量.
> f(x,y)
Error in model.frame.default(formula = y ~ x, drop.unused.levels = TRUE) : 
  variable lengths differ (found for 'x')
Enter a frame number, or 0 to exit   
1: f(x, y)
2: lm(y ~ x)
3: eval(mf, parent.frame())
4: eval(expr, envir, enclos)
5: model.frame(formula = y ~ x, drop.unused.levels = TRUE)
6: model.frame.default(formula = y ~ x, drop.unused.levels = TRUE)
Selection: 1
Called from: eval(expr, envir, enclos)
Browse[1]> x
[1] 1 2 3 4 5
Browse[1]> y
[1] 1.6591197 0.5939368 4.3371049 4.4754027 5.9862130 1.0000000