gpt4 book ai didi

r - 如何延迟R中函数参数的评估?

转载 作者:行者123 更新时间:2023-12-01 00:12:05 26 4
gpt4 key购买 nike

我想延迟 R 中函数参数的评估。示例:

my_func <- function(FUN){print(FUN); print(FUN)}
my_func(runif(1))
#> [1] 0.2833882
#> [1] 0.2833882

创建于 2019-07-21 由 reprex package (v0.2.1)

这如文档所述,因为 runif(1)只计算一次,结果打印两次。

相反,我不想要 runif(1)被评估,直到它在每个 print() 语句中。这将生成两个不同的随机数。

换句话说,我不希望 FUN“解决”---如果这是正确的词---到 runif(1)直到我们在 print() 内陈述。

最佳答案

这是 match.call 的一个技巧和 eval

my_func <- function(FUN){
print(eval(match.call()[[2]]))
print(eval(match.call()[[2]]))
}

my_func(runif(1))

#[1] 0.7439711
#[1] 0.5011816

my_func(runif(1))
#[1] 0.7864152
#[1] 0.730453

关于r - 如何延迟R中函数参数的评估?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57138776/

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