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