gpt4 book ai didi

r - 如何检测函数的输出是否分配给R中的对象

转载 作者:行者123 更新时间:2023-12-03 22:22:54 26 4
gpt4 key购买 nike

在 R 函数内部,是否可以检测用户是否已将输出分配给对象?

例如,只有当输出未分配给对象时,我才想在控制台上打印一些信息,我正在寻找这样的东西

fun <- function(a){
b <- a^2
if(!<OUTPUT ASSIGNED>) cat('a squared is ', b)
return(invisible(b))
}

因此,无论是否分配函数输出,控制台上的结果都会有所不同,例如:
> fun(5)
> a squared is 25
>
> out <- fun(5)
>
>

最佳答案

不确定我是否完全考虑过这个问题,但这似乎适用于您给出的示例。 (请注意,在您希望接受此处理的 = 中使用 assign.Primitive("<-")fun 很重要。)

fun <- function(a){
b = a^2 # can't use <- here
if (!identical(Sys.getenv("R_IS_ASSIGNING"), "true")) cat('a squared is ', b)
return(invisible(b))
}

`<-` <- function(a, b) {
Sys.setenv("R_IS_ASSIGNING" = "true")
eval.parent(substitute(.Primitive("<-")(a, b)))
Sys.unsetenv("R_IS_ASSIGNING")
}

fun(5)
#> a squared is 25
out <- fun(6)
out
#> [1] 36

创建于 2019-02-17 由 reprex package (v0.2.1)

关于r - 如何检测函数的输出是否分配给R中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54731759/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com