或者看看调试功能trace()
。它可能不是您正在寻找的东西,但它可以让您尝试更改,并且它具有很好的功能,您可以随时使用untrace()
.
trace()
是base
软件包的一部分,并带有一个漂亮而全面的帮助页面。
首先调用as.list (body(foo))
以查看代码的所有行。
as.list(body(foo))
[[1]]
`{`
[[2]]
line1 <- x
[[3]]
line2 <- 0
[[4]]
line3 <- line1 + line2
[[5]]
return(line3)
然后,您只需定义要添加到函数中的内容以及通过在trace()
.
trace (foo, quote(line2 <- 2), at=4)
foo (2)
[1] 4
我在一开始就说过,这trace()
可能不是您要查找的内容,因为您并没有真正更改第三行代码,而是简单地将值重新分配给line2
以下插入的代码行中的对象。如果您打印出您现在跟踪的函数的代码,它会变得更清楚
body (foo)
{
line1 <- x
line2 <- 0
{
.doTrace(line2 <- 2, "step 4")
line3 <- line1 + line2
}
return(line3)
}