On 07/02/2016 8:08 AM, Daniel Kaschek wrote:
Dear all,
I have a function "fn" with its own environment, i.e.
env <- environment(fn)
and env is not .GlobalEnv. And another function
getValue <- function(x) environment(x)$mylist
which returns the list object "mylist" which is in "env". If I want to
modify "mylist", I could write
'getValue<-' <- function(x, value) { environment(x)$mylist <- value}
which gives not the desired result, e.g.
getValue(fn)[[1]] <- 3
will set the first list entry of "mylist" to 3. But then "fn" will also
be 3!
environment(fn)$mylist[[1]] <- 3
does set the list entry correctly while keeping "fn". What's the
difference?
An assignment function should return the modified value. So it looks
like you would need
'getValue<-' <- function(x, value) {
environment(x)$mylist <- value
x
}
but in fact, this doesn't work:
getValue(fn)[[1]] <- 3
Error in getValue(fn)[[1]] <- 3 : could not find function "getValue"
I suspect this is a parser problem. However, it does suggest a simple
workaround for you:
Just define
getValue <- function(x) environment(x)$mylist
and then your expression works as expected.
Duncan Murdoch
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel