2017-08-29 41 views
0
a <-70 

outer <- function(){ 
a <<- 20 
    inner <- function(){ 
    a <<- 30 
    print(a) 
} # end of inner function 
inner() 
print(a) 

} # end of outer function 

►现在打印出外部函数不应全局变量 “a” 改变为20,然后30

> outer() 
    30 
    20 
> a 
    70 

怎么能 “一” 还是70 ... < < - 正在改变外部“a”中的全局​​变量 正在改变“a”...在内部...“a”正在改变outer()中的“a”...所以最大的“a”仍然如何70?

+0

有些不对劲你的榜样 - 内()被调用之前''内环闭合,有一个太多结束括号。评估'outer()'函数不应该产生两个print语句。 –

+0

由于只有打印语句,并且输出中有两行打印行会相应地改变它,因此问题出现了问题。我认为它只会打印20,表示您当前写入的内容。 –

+0

我的错....... –

回答

0

考虑使用reprex()重现性的例子,这将显示您的大括号未对齐,并且答案实际上是30

a <- 70 

outer <- function(){ 
    a <<- 20 
    inner <- function(){ 
    a <<- 30 
    print(a) 
    } # end of inner function 
    inner() 
    print(a) 

} # end of outer function 
outer() 
#> [1] 30 
#> [1] 30 
a 
#> [1] 30