这个问题只是为了好奇。我和同事试图编写一个函数,返回NULL
,但不打印它
在我们找到return(invisible(NULL))
之前,我尝试过return({dummy<-NULL})
,它有效,但只有一次。第一次评估后,功能再次开始打印:
test <- function() {
return({x<-NULL})
}
# no printout
test()
# with printout
test()
# with printout
test()
这是怎么回事?
我认为这是由于R中内置了一些较旧的返回处理。有许多返回函数,withVisible
、invisible
等。当您在返回函数中返回赋值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提取适当的设置。">(源(