[R] function that uses a variable name as the parameter
William Dunlap
wdunlap at tibco.com
Thu Nov 13 19:51:42 CET 2008
On 12/11/2008 7:59 AM, David Croll wrote:
>
> Hello dear R people!
>
>
> Several times it occurred to me that a function that uses a variable
name as a parameter would be helpful, but I did not find out how to
write such a function. I have experience in several programming
language, but I did not come across a helpful trick...
>
> What I want to have is...
> a <- 12 # starting value
> add <- function(variable,increment) {
> variable <- variable + increment
> }
>
> # by typing a and 25 for example, you specify that 25 will be added to
the variable a...
> add(a,25)
> # the new a equals 12 + 25 = 37
>
> Thanks for all the help - I'll try to give my advice when I get across
a problem I can solve!
To do this with normal looking S syntax and semantics (no dynamic
scoping)
you could use a 'replacement function' (is there a better standard term
for that?).
E.g.,
`incrementBy<-` <- function(x, value) {
x <- x + value
x
}
Use it as
> a<-17
> incrementBy(a) <- 25
> a
[1] 42
Note how it is clear from the usage 'a' is being changed, since
it is on the left side of the assignment.
Usually replacement functions have a non-replacement analog which
does roughly the inverse of the replacement, but I'm not sure if
that would make sense here. You could write a log<- function that
is the inverse of the log function
`log<-` <- function(x, base = exp(1), value) {
x[] <- base ^ value
x
}
and combine it with incrementBy to increment on a log scale. E.g.
> x<-66:68
> incrementBy(log(x,base=10)) <- 2 # increment log(x,10) by 2 =>
multiply x by 100
> x
[1] 6600 6700 6800
Bill Dunlap
TIBCO Spotfire Inc
wdunlap tibco.com
More information about the R-help
mailing list