On Jan 3, 2008, at 5:08 PM, Bert Gunter wrote: > Gentlemen: > > I'm sorry, I don't see the problem. R's is Lisp (or Scheme)- > inspired, so you > need to think in terms of lists, or equivalently, trees. So what > you seem to > want to do is easily navigate down a tree to modify a node. This is > fairly > easy to do with list indexing: > > ## First create a tree with 5 top nodes each of which has 3 child > leaf nodes > > ## each of which is an empty list. > > fooStack<-lapply(1:5,function(x)lapply(1:3,function(x)list())) > > ## Now modify the <4,2> leaf list: > > fooStack[[c(4,2)]]$bar <- "bar" > ## Note: This is shorthand for fooStack[[4]][[2]]$bar <- "bar"
But you want to do this inside a function, i.e. to have function that, when passed an argument which is a list, sets the "bar" item of this list to the string value "bar" (or perhaps something more complicated). Probably the correct way to do this would be to do fooStack[[1]] <- fooModifier(fooStack[[1]]) But the OP was asking, effectively, if we can make it so that the <- part is not necessary. I have often found myself wanting to do this, and admittedly R, with its LISP functional programming inspiration, does not make this very easy. I should point out here that my suggestion of using `fooModifier<-` was purely for showing the potential, I think it would be very bad form to actually use it (unless the "<- NULL" part is going to be used in the assignment somehow), since it does not use the value that it pretends to be assigning to things. Peter, perhaps it would help if you gave us more context into why you wanted this done, and perhaps then someone can suggest a more natural approach. Perhaps there is a more "R" way to solve your original problem. One gotcha if you use the proto package (which I do highly recommend, it is a wonderful package). I found that mysterious things happen if you name your proto object x: > library(proto) > x<-proto(y=5) > x$y Error in get("y", env = x, inherits = TRUE) : invalid 'envir' argument Took me a while to figure out that the problem was caused by naming the object x. Haris Skiadas Department of Mathematics and Computer Science Hanover College ______________________________________________ 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.