Going down the text parsing approach, you might want to use something like this:
fnc <- eval(parse(text="function(x) dnorm(x)")) all.equal(1/sqrt(2*pi), fnc(0)) [1] TRUE On Thu, Nov 10, 2011 at 8:55 AM, David Winsemius <dwinsem...@comcast.net> wrote: > > On Nov 9, 2011, at 9:11 PM, Aimee Jones wrote: > >> Hi all, >> I am trying to import some functions into a script and am having >> difficulty in doing so. I am able to import a series of functions from >> a .tex file into my script, and call on each function by column name, >> however R reads them as data rather than as functions and I am >> struggling with the syntax to make R read them as a function instead. >> >> Below is a small set of the things I have tried: >> >> parms["B1"] >> >> returns the character string {2*dnorm(T1(t),mean=32.5,sd=7)} . This is >> from the imported script "parms". >> >> when I write B1<-function(T1,t) (parms["B1"]) and then enter B1 to see >> what the workspace returns, I get >> >> function(T1,t) (parms["B1"]) >> >> I am trying to get B1 to return as function(T1,t) >> {2*dnorm(T1(t),mean=32.5,sd=7)}, so that I can plot B1(T1,t). > > You need to use the proper functions to transmute character values to > language elements. The body of functions are "expressions", a particular R > class. > > Here's another failed attempt: >> body(B1) <- "{2*dnorm(T1(t),mean=32.5,sd=7)}" >> B1 > function (T1, t) > "{2*dnorm(T1(t),mean=32.5,sd=7)}" > > I knew that the quotes around the expression were NOT going to work. After > successfully creating a function in the manner illustrated below I realized > that you had not indicated what T1 was (and it appears to be a function), so > it couldn't be tested. So I made a slightly simplified version: > >> B1<-function(t) (parms["B1"]) # starting with something like where you >> are ... >> body(B1) <- expression({2*dnorm(t, mean=32.5, sd=7)}) >> B1(32.5) > [1] 0.1139835 > > This might be a more clean method if you were starting all over: > >> B1 <- function(T1,t) { } >> body(B1) <- expression({2*dnorm(T1(t), mean=32.5, sd=7)}) >> B1 > function (T1, t) > { > 2 * dnorm(T1(t), mean = 32.5, sd = 7) > } >> > >> >> >> Is there any way to do this? >> >> Thank you for your assistance and patience, >> yours sincerely, >> >> Aimee Jones >> >> ______________________________________________ >> 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. > > David Winsemius, MD > West Hartford, CT > > ______________________________________________ > 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. > ______________________________________________ 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.