在R函数中,在return()语句之后打印(一些文本)

在R函数中,在return()语句之后打印(一些文本),r,function,text,return,R,Function,Text,Return,产出: set.seed(8) f(5) 如何使print语句出现在函数结果之后,以便输出为: [1] "x is: 5" [1] 0.09550734 不将文本作为返回参数的一部分放在同一个函数中是否可以执行此操作?将函数更改为不可见返回,并使用“打印”按所需顺序显示内容: [1] 0.09550734 [1] "x is: 5" f <- function(x, print = TRUE){ # return(mean(rnorm(x))) #return() not necce

产出:

set.seed(8)
f(5)
如何使print语句出现在函数结果之后,以便输出为:

[1] "x is: 5"
[1] 0.09550734

不将文本作为返回参数的一部分放在同一个函数中是否可以执行此操作?

将函数更改为不可见返回,并使用“打印”按所需顺序显示内容:

[1] 0.09550734
[1] "x is: 5"
f <- function(x, print = TRUE){
# return(mean(rnorm(x))) #return() not neccessary
a <- mean(rnorm(x))
b <- paste(" x is:", x)
if isTRUE(print) {
    return(cat(c(a, b), sep = "\n"))
    }
return(x)
}

将函数更改为不可见返回,并使用“打印”按所需顺序显示内容:

f <- function(x, print = TRUE){
# return(mean(rnorm(x))) #return() not neccessary
a <- mean(rnorm(x))
b <- paste(" x is:", x)
if isTRUE(print) {
    return(cat(c(a, b), sep = "\n"))
    }
return(x)
}

根据定义,函数范围中的任何内容都不会在返回调用后执行,因此您的问题的答案是,您不能。也许有人能帮你解决你的实际问题,也就是说,你为什么要这样做?如果你提供更多的细节。我有一个相对较大的输出时,写入屏幕,并希望有一个文本语句在最后的一种数据摘要。也许我应该把摘要文本和输出一起放在一个列表中。只需分配函数的结果,就可以得到摘要。在您的示例中,如果您尝试zSure,但实际上我希望有一个选项将其打印到屏幕上。我想我必须接受函数作用域。如果是这样,请尝试resBy definition,函数作用域中的任何内容在返回调用后都不会执行,因此您的问题的答案是,您不能。也许有人能帮你解决你的实际问题,也就是说,你为什么要这样做?如果你提供更多的细节。我有一个相对较大的输出时,写入屏幕,并希望有一个文本语句在最后的一种数据摘要。也许我应该把摘要文本和输出一起放在一个列表中。只需分配函数的结果,就可以得到摘要。在您的示例中,如果您尝试zSure,但实际上我希望有一个选项将其打印到屏幕上。我想我必须接受函数范围。如果是,请尝试res
f <- function(x) {
  out <- mean(rnorm(x))
  print(out)
  print(paste("x is:", x))
  invisible(out)
}