假设我有一个想要稍微调整行为的函数(比如跳过某一行).我可以
- 复制和粘贴函数并更改它(&A).
- 使用
debug
以交互方式更改代码. - 使用
trace
注入自己的代码.
我对这个职位的 Select 3有百分之百的兴趣.
例如,让我们假设以下非常简单的代码:
f <- function(dbg) {
x <- rnorm(1)
if (dbg) {
cat("Message 1\n")
}
if (x < 0 & dbg) {
cat("Message 2\n")
}
x
}
如果(无论出于什么原因)我想跳过Message 2
(但保留Message 1
),我可以使用trace
,如下所示:
set.seed(12231)
untrace(f)
f(TRUE)
# Message 1
# Message 2
# [1] -0.5787277
trace(f, quote(dbg <- FALSE), at = 4, print = FALSE)
set.seed(12231)
f(TRUE)
# Message 1
# [1] -0.5787277
现在假设略有不同的函数g
:
g <- function() {
x <- rnorm(1)
cat("Message\n")
cat("Message 2\n")
x
}
Conceptually我想做一些类似的事情:
trace(g, quote(if(FALSE)), at = 4, print = FALSE)
但这显然行不通.
有没有办法用trace
跳过(A)某些行?或者是我复制、粘贴和编辑该功能的唯一 Select ?