R:返回NULL时更改打印行为的函数



这个问题只是为了好奇。我和同事试图编写一个函数,返回NULL,但不打印它

在我们找到return(invisible(NULL))之前,我尝试过return({dummy<-NULL}),它有效,但只有一次。第一次评估后,功能再次开始打印:

test <- function() {
return({x<-NULL})
}
# no printout
test()
# with printout
test()
# with printout
test()

这是怎么回事?

我认为这是由于R中内置了一些较旧的返回处理。有许多返回函数,withVisibleinvisible等。当您在返回函数中返回赋值x<-null时,它不会自动打印。如果要打印作业。。。

test <- function() {
withAutoprint(x<-NULL)
}
# with printout this time
test()
# with printout
test()
# with printout
test()

我认为这可能只是被硬编码到返回函数中,也许是从下面的逻辑中提取了一些东西,只是一个偶然的机会。

Source: R Documentation
x <- 1
withVisible(x <- 1) # *$visible is FALSE
x
withVisible(x)      # *$visible is TRUE

同样,如果我们不使用表达式,只是在返回函数中返回一个变量或值,我们就会自动打印。我猜测它在第二次调用时返回的原因与x之前已经被分配有关。

编辑:我在关于自动打印的文档中发现了这一点"是否打印顶级R表达式的返回值由全局布尔变量R_Visible控制。这是在基于文件src/main/names中表的eval列进入所有基元和内部函数时设置的(为true或false(。c:可以通过宏PRIMPRINT提取适当的设置。">(源(

相关内容

  • 没有找到相关文章

最新更新