我想延迟 R 中函数参数的评估。示例:
my_func <- function(FUN){print(FUN); print(FUN)}
my_func(runif(1))
#> [1] 0.2833882
#> [1] 0.2833882
由 reprex package (v0.2.1) 于 2019-07-21 创建
这如文档所示,因为
runif(1)
只计算一次,其结果打印两次。相反,我不希望
runif(1)
被评估,直到它在每个 print() 语句中。这将生成两个不同的随机数。换句话说,在我们进入
runif(1)
语句之前,我不希望 FUN “解析”--- 如果这是正确的词 --- 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/