Thanks. /Henrik On Thu, Dec 12, 2013 at 5:27 PM, Duncan Murdoch <murdoch.dun...@gmail.com> wrote: > On 13-12-12 7:57 PM, Henrik Bengtsson wrote: >> >> First, why does this expression have a 'srcref' element: >> >>> exprA <- substitute(function(x) a*x, list(a=2)) >>> print(exprA) >> >> function(x) 2 * x >>> >>> str(as.list(exprA)) >> >> List of 4 >> $ : symbol function >> $ :Dotted pair list of 1 >> ..$ x: symbol >> $ : language 2 * x >> $ :Class 'srcref' atomic [1:8] 1 20 1 34 20 34 1 1 >> .. ..- attr(*, "srcfile")=Classes 'srcfilecopy', 'srcfile' >> <environment: 0x00000000111feaf8> >> >> whereas this does not: >> >>> exprB <- substitute(a*x, list(a=2)) >>> print(exprB) >> >> 2 * x >>> >>> str(as.list(exprB)) >> >> List of 3 >> $ : symbol * >> $ : num 2 >> $ : symbol x >> > > Function definitions get srcrefs. > > >> >> Second, what is the proper way to drop that 'srcref' element in >> 'exprA'? I can think of either >> >> exprC <- exprA >> exprC[[4L]] <- NULL > > > That should be best. > > Duncan Murdoch > >> >> or >> >> exprC <- parse(text=deparse(exprA)) >> >> Anything better/safer? >> >> >> BACKGROUND: >> The reason for this is that I wish to create a function dynamically >> via variable substitution such that when printed, the function >> displays the substituted values, e.g. >> >>> fcnA <- eval(exprA) >>> print(fcnA) >> >> function(x) a*x >> >> versus >> >>> fcnC <- eval(exprC) >>> print(fcnC) >> >> function(x) 2 * x >> >> Thanks, >> >> Henrik >> >> ______________________________________________ >> 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