我在想这样的事情:
> fx = function(x, y) {
+ if (exists("debugging")) {
+ print(x)
+ print(y)
+ }
+ x+y
+ }
> fx(1, 2)
[1] 3
> debugging = 1
> fx(2, 3)
[1] 2
[1] 3
[1] 5
这样,您可以编写任意数量的调试消息,并且当您要关闭它们时,您只需
rm(debugging)
问题在于调试变量(或您给它提供的任何名称)可以随时被任何其他软件包删除或创建,这很难控制。有任何想法吗?
最佳答案
另一个选择是在包中定义debugging
函数:
debugging <- local({
stored.value <- FALSE
function(bool = NULL)
if (is.null(bool)) {
stored.value
} else {
stopifnot(is.logical(bool), length(bool) == 1L)
stored.value <<- bool
}
})
# default value:
debugging()
# [1] FALSE
# set value
debugging(TRUE)
# check value
debugging()
# [1] TRUE
这应该可以解决您对“如果以后决定更改程序包名称该怎么办?”的担忧。我想。
关于r - 在R中全局打开和关闭调试消息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26566619/