最近在看 adv-r 第一版和第二版关于 NSE 的部分,但是并没有很好的思路,在此请教各位。
假设要给 foreach::foreach
写一个 wrapper function,接受用户输入的任意 expression 作为输入。问题在于,用户提供的 expression 似乎并不能直接得到 i
的值,reprex 如下。
`%do%` <- foreach::`%do%`
f <- function(expr, n, seed) {
foreach::foreach(i = seq_len(n)) %do% {
# set.seed(seed + i - 1)
print(i)
expr
}
}
f(
{
sqrt(i) + rnorm(1)
},
n = 5,
seed = 42
)
#> Error in { : task 1 failed - "object 'i' not found"