我似乎对什么是R的良好实践深感困惑。假设我有以下R代码:
f<-function() { g<-function(s) { b<-b+1 s<-s+5 } b<-10 g(2) return(b) }
在任何一种典型的语言中,这都会返回b=10,据我所知,让f认识到g在修改b的典型方法是使用全局变量。然而,据我所知,在R中,尽可能避免全局变量似乎是一种常见的做法。这让我想问,我应该如何修改f,使它输出b=11而不使用任何全局变量?我似乎要么误解得很深,要么对一个很重要的想法一无所知。
<- , = <<- . 第三种形式, <<
<-
=
<<-
<<
如果你用这个表格 g() 函数,它增加 b f() 按1运行。
g()
b
f()
f<-function() { g<-function(s) { # use <<- form instead of <- b<<-b+1 s<-s+5 } b<-10 g(2) return(b) }
> f<-function() + { + g<-function(s) + { + b<<-b+1 + s<-s+5 + } + b<-10 + g(2) + return(b) + } > f() [1] 11 >