我在想这样的事情:

> 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/

10-12 17:47