R 用局部变量更新函数

R 用局部变量更新函数,r,function,R,Function,如何使用指定变量的值更新函数?这对于更新for循环中的函数非常有用 t <- 10 fn <- function(x) return(x + t) 所需输出 function(x) return(x + 10) 尝试 function(x) return(x + 10) 我试着使用body()和expression(),但没有成功 body(fn) <- expression(x + t) body(fn)我建议做一个闭包,它是一个返回函数的函数(与一个相关的环境,在这

如何使用指定变量的值更新函数?这对于更新
for
循环中的函数非常有用

t <- 10
fn <- function(x) return(x + t)
所需输出

function(x) return(x + 10)
尝试

function(x) return(x + 10)
我试着使用
body()
expression()
,但没有成功

body(fn) <- expression(x + t)

body(fn)我建议做一个闭包,它是一个返回函数的函数(与一个相关的环境,在这种情况下可以找到
t
):


多亏了@Rich Scriven,这一功能得以实现:

body(fn)[[2]] <- substitute(x + t, list(t = t))

你真的希望函数定义中的
t
计算为
10
吗?@zack我希望函数使用局部变量
t
body(fn)[[2]]]@RichScriven是的,就是这样!谢谢
for (i in 1:3) print(fn(i)(7))

# [1] 8
# [1] 9
# [1] 10  
body(fn)[[2]] <- substitute(x + t, list(t = t))
> fn
> function (x) 
> return(x + 10)
> fn(1)
> 11