您能解释一下模块中的变量吗?
我定义了一个这样的模块:
CMod <- function(){
fld = 1:3
getField <- function(){ fld }
change <- function( ){
fld <<- 10:13
print( fld )
}
return (
list( field=fld, change=change, getField=getField )
)
}
但变量“fld”通过访问例程显示不同的值。
> myMod <- CMod()
> myMod$field
[1] 1 2 3
> myMod$change( )
[1] 10 11 12 13
> myMod$field
[1] 1 2 3
> myMod$getField()
[1] 10 11 12 13
当fld读取时通过getField()函数, 它显示“10 11 12 13”。 但是当它直接读取时,它会显示“1 2 3”。
有什么区别?
答案 0 :(得分:1)
来自?'<<-'
,
&#34;运算符&lt;&lt; - 和 - &gt;&gt;导致通过环境进行搜索 对于要分配的变量的现有定义。如果有这样的变数 找到(并且其绑定未锁定)然后重新定义其值,否则 任务发生在全球环境中。&#34;
您的change
功能包含<<-
,在整个功能环境中重新定义fld
。
change <- function( ){
fld <<- 10:13 ## 'fld' redefined
print( fld )
}
如果您使用<-
,则会看到差异。
> CMod <- function(){
fld = 1:3
getField <- function(){ fld }
change <- function( ){
fld <- 10:13
print( fld )
}
return (
list( field=fld, getField = getField, change=change)
)
}
> myMod <- CMod()
> myMod$field
## [1] 1 2 3
> myMod$change( )
## [1] 10 11 12 13
> myMod$field
## [1] 1 2 3
> myMod$getField()
## [1] 1 2 3