You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言内部函数中访问并修改外部函数的局部变量?

在R中修改外部函数的变量

你的判断没错——当前代码里内部函数g中的x <- x + 1只是在g的局部环境里创建了x的副本,并没有修改外部函数f中定义的x。运行原代码的输出是:

[1] 1
[1] 2

可见f里的x仍保持初始值1,g返回的是自己局部环境里的x。

要让g访问并修改f中的x,可以用<<-操作符,它会向上遍历父环境查找目标变量,找到后直接修改,而非创建局部副本。修改后的代码如下:

f <- function() {
    x <- 1
    g <- function(y) {
        x <<- x + 1 # 向上查找并修改外层函数f中的x
        return(x)
    }
    r <- g(1)
    print(x)
    print(r)
}
f()

运行这段代码会得到:

[1] 2
[1] 2

此时f中的x已经被g成功修改。

需要注意的是,<<-会一直向上查找环境(从当前函数的父环境开始),如果在所有父环境都没找到目标变量,它会在全局环境中创建该变量,使用时要注意避免意外修改全局变量。

内容的提问来源于stack exchange,提问作者Ray Tayek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 14:17:34