如何在以下代码段中修改可变的“loco”的值:

poco <- function() {

func <- function(x) {
    print(loco)
    loco <- loco+x
}

loco <- 123
func(1)
func(2)
}

此函数给出以下结果:
> poco()
[1] 123
[1] 123

最佳答案

poco <- function() {

func <- function(x) {
    print(loco)
    loco <<- loco+x
}

loco <- 123
func(1)
func(2)
}

<<-运算符分配给外部范围。 (如assign(..., env=...))。但是,如评论中所述,这通常是一个坏主意。如果您想提出第二个问题,在此概述您的整个问题,我敢打赌,还有其他更好的选择。

如果您不小心,<<-可能会咬您。看到这个wiki article

在您第一个使用loco <- loco + x的函数中发生的事情是,该函数在发现func时将其视为loco的本地范围,并在本地范围(而不是func范围)中分配给loco,因此它看起来不在poco的范围内。

希望有帮助!

关于r - 了解R中的变量范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12803269/

10-11 03:42