代码之家  ›  专栏  ›  技术社区  ›  eladin

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

  •  2
  • eladin  · 技术社区  · 6 年前

    这个问题只是出于好奇。我的同事和我正试图写一个返回 NULL ,但不打印。

    在我们找到 return(invisible(NULL)) ,我试过了 return({dummy<-NULL}) 但只有一次。第一次评估后,函数再次开始打印:

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Chabo    6 年前

    我认为这是由于一些旧的返回处理内置于R。有很多返回函数, withVisible invisible x<-null 在return函数中,它不会自动打印。如果你想打印作业。。。

    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之前已经分配的事实有关。

    编辑: 我在有关自动打印的文档中发现了这一点。 ( Source