如何在以下代码段中修改可变的“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/