Force a variable substitution in expression
On 27/11/2009 11:04 AM, Saptarshi Guha wrote:
Hello,
I have a function that creates an expression object with some variables
substituted e.g
foo <- function(s){
expression({
v <- s
print(v)
})
}
Thus foo returns an expression, however the expression has the symbol 's'
contained within it and thus returns an error when eval'd e.g
x <- foo(10)
eval(x)
Error in eval(expr, envir, enclos) : object 's' not found
Q: How do I force a substitution so that the returned expression has the value
of 's' 'hardcoded' in it e.g
foo(10)
returns
expression({
v <- 10
print(v)
})
The substitute() function can do it, but the bquote() function is the
most convenient:
> foo <- function(s) {
+ bquote(expression({
+ v <- .(s)
+ print(v)
+ }))
+ }
> foo(10)
expression({
v <- 10
print(v)
})
Duncan Murdoch