See packages R.oo and proto. If you wish to do it yourself, you want to utilize environments for this.
/Henrik On Thu, Jul 8, 2010 at 6:52 AM, Paul Bailey <pdbai...@umd.edu> wrote: > > I'm working with a large object that I want to modify slightly in a function. > Pass-by-reference would make a lot of sense, but I don't know how to do it. > > I've searched this archive and thought that I can do something like > > f <- function(x) { > v1 <- list(a=x,b=3) > g(x) > v1 > } > g <- function(x) { > frame <- parent.frame() > assign("v1",list(a=x,b=x),frame) > } > f(4) > returns list(a=4,b=4) > > but what if I wanted to make v1[[1]] = v1[[1]] + v1[[2]] without creating a > copy of v1? > > f2 <- function(x) { > v1 <- list(a=x,b=3) > g2(x) > v1 > } > g2 <- function(x) { > frame <- parent.frame() > v1 <- get("v1",envir=frame) > v1[[1]] <- v1[[1]] + v1[[2]] > } > f2(4) > > but this fails. (it returns list(a=4,b=3) because v1 was copied into g2, not > passed by reference) Is there a way to do this? > -- > View this message in context: > http://r.789695.n4.nabble.com/pass-by-reference-tp2281802p2281802.html > Sent from the R devel mailing list archive at Nabble.com. > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel