On Fri, 13 Mar 2009, Thomas Mang wrote:
Hi,
I wonder if the following is possible in R:
Suppose a function takes an argument, and wants to modify this argument so >that the change is visible _at the call side_. It would be what is for
example known as pass-by-reference-to-non-const in C++.
test <- function(x)
{
x <- 10
...
return (somethingElse) # I do NOT want having to return x
}
number = 5
test(number)
stopifnot(number == 10)
It's possible in your example
test<-function(x){
eval(substitute(x<-10),parent.frame())
return(42)
}
However, it is still likely to be a bad idea. What do you want to happen for
test(5)
test(x+y)
test(test(y))
retest<-function(z) {z<-5; test(z); print(z)}
retest(x)
R really doesn't have pointer or reference types, and there's no way to ensure
that the arguments to a function are lvalues.
-thomas
Thomas Lumley Assoc. Professor, Biostatistics
tlum...@u.washington.edu University of Washington, Seattle
______________________________________________
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.