Turn a Character String of the Right-Hand Side of an Equation into an R Function

Share:

Description

equation2function converts the right-hand side of an equation that can be written as a single line (like the right-hand side of an object of class formula) and creates an R function which calls the variables within as arguments and returns values consistent with the parameters of the input equation as written.

Usage

1
equation2function(equation, envir = parent.frame(), notName = "XXXXXXXXXXX")

Arguments

equation

The right-hand-side (RHS) of an equation, given as a character string. If not of type character, equation2function attempts to coerce equation to type character and fails if it cannot.

envir

The environment the resulting function will be evaluated in. See as.function.

notName

A useless string used simply as a placeholder in turning equation into a function, which should not match any actual variable in equation. Only supplied as an argument in case any

Details

This simple little function is rather hacky but seems to get the job done, for a functionality that doesn't seem to be present elsewhere in R.

Value

A function, with named blank (i.e. no default value) arguments.

Author(s)

David W. Bapst

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# some simple examples
foo<-equation2function("x+y")
foo
foo(x=4,y=0.1)

foo<-equation2function("x+2*sqrt(2*y+3)^2")
foo
foo(x=4,y=0.1)

# what about weird long argument names and spaces
foo<-equation2function("stegosaur + 0.4 * P")
foo
foo(stegosaur=5,P=0.3)

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.