6
我想了解R中懒惰评估的工作原理。它只适用于函数参数的评估吗?因为我明白,例如了解R中的懒惰评估
f <- function(x = x, y = x*2) {
c(x, y)
}
f(2)
[1] 2 4
但是在其他语言中,例如, Haskell懒惰的评估意味着函数调用只有在实际使用时才会被评估。所以,我希望这样的事情在瞬间运行:
g <- function(x) {
y <- sample(1:100000000)
return(x)
}
g(4)
但它清楚地计算,即使其结果并不习惯的sample
电话。
难道有人可以解释这是如何工作的,或者指向我详细解释的方向?
类似的问题:
Question with similar wording, but different problem
我指的是哈德利韦翰的书,他提到: “默认情况下,R函数的参数是懒惰的,他们只是评估,如果实际使用”。最新版本是不是真的呢? – Sarang
请注意,这个问题包含了这个短语“它是否仅适用于函数参数的评估?”我的回答与韦克汉姆的说法并不矛盾。 –