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'中的例子。 –