On 26.02.2010 16:33, Matt Asher wrote:
Hi folks,
I am having trouble accessing sub-functions when the main function is
stored in an array. For example, the following test code works fine:
fcns = c(abs, sqrt)
fcns[[1]](-2)
fcns[[2]](2)
However, when I try to access sub-functions declared within list() in a
function, this only works directly. When I try to access these within an
array only the first declared sub-function is run. For example I have
the function:
agent <- function(id) {
# MANY VARIABLES DECLARED
list( set_id = function(newid) {
id <<- newid
},
get_id = function(newid) {
return(id)
},
# LOTS MORE SUB FUNCTIONS
)
}
If I create a variable to hold this function, I can then access all the
subfunctions without problem Example:
myAgent = agent(1)
myAgent$get_id() # Works fine
However, once this function is stored in a vector, I can no longer
access the subfunctions.
agents = c(agent(1), agent(2))
agents is still a list (or in other words a vector of mode "list"), but
since you c()'ed, it has one hierarchy level less than you expect.
In order to make your code below work, you rather need:
agents <- list(agent(1), agent(2))
Anyway, I hope you know that lexical scoping will yield in the
environments attached to all those functions they have been generated in
and you know about possible consequences. If not, you really should not
be doing this ... (nor using <<- ) ...
agents[[1]] # This shows the set_id function only, unnamed
agents[[1]]$get_id() # Leads to error below:
Error in agents[[1]]$get_id : object of type 'closure' is not subsettable
How can I access these sub methods within the vector?
I am using R version 2.8.1
... and upgrade to some recent version of R.
Uwe Ligges
TIA for the help!
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.