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.

Reply via email to