0
我有R中高階函數的一個問題:R:封找不到對象,直到叫
power <- function(x , modify){
return(
function(y){
return( modify(y^x))
}
)
}
mod <- function(z){z+1}
sq <- power(x = 2,modify = mod )
# remove the function that was passed to `power()`, I expect it to be saved in the function environment:
rm(mod)
sq(2)
# Error in sq(2) : object 'mod' not found
但是,如果我刪除mod()
之前調用以某種方式sq()
,不會出現問題,但我得到警告"In sq(2) : restarting interrupted promise evaluation"
:
mod <- function(z){z+1}
sq(2)
rm(mod)
sq(2)
我怎樣才能避免在新的環境中使用關閉前致電與mod()
封閉在全球環境中被定義?那麼在範圍和承諾方面發生了什麼?
@DavidHeckmann:作爲形式參數傳遞給函數的任何對象都以這種方式行爲,而不僅僅是其他函數。看看'force'中的例子。 –