R : Define a function from character string

标签 r

我想定义一个函数 f来自 character 的参数和表达式从 .csv 读取的字符串文件。
此功能f有以下表达式:

f = function( parameters ) { expression }
其中参数是 n 个参数的列表,表达式是这些参数的函数。
例如:参数为x1 , x2 , x3 , 表达式为 (x1+x2)*x3 .
函数f然后是 f = function(x1,x2,x3){ (x1+x2)*x3 } .
我如何在 R 中定义这些函数?
编辑添加更多上下文:
给定 2 个字符字符串,用于正文和参数
body="(x1+x2)*x3"
args = "x1,x2,x3"
我们如何获得?:
function (x1, x2, x3) 
(x1 + x2) * x3
请注意 this question是相似的,但不要完全回答这个问题,因为提出的解决方案不会从字符串创建函数形式(参数)。

最佳答案

eval()parse() ,一起使用,可以帮助你做你想做的事:

body <- "(x1 + x2) * x3"
args <- "x1, x2, x3"

eval(parse(text = paste('f <- function(', args, ') { return(' , body , ')}', sep='')))
# Text it:
f(3,2,5)
## 10

说明: parse() 将返回已解析但未计算的表达式。我使用 text函数中的参数将字符串传递给解析器。 eval() 将评估解析的表达式(在这种情况下,它将执行您刚刚解析的代码块)。

希望这可以帮助

关于R : Define a function from character string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26164078/

相关文章:

R data.table 文本解析

r - 将列值与第一行进行比较并保留 R 中的原始值

r - 基于数据帧列表(未知长度)中唯一名称的元素总和

R,在 Shiny 和 ggvis 中绘制日期的问题

r - 使用 data.table 基于 R 中的两个分组变量进行汇总

r - 如何生成和绘制所有生成树?

r - 使用并行函数时的环境和范围

R - 如何将纬度和经度坐标转换为地址/人类可读位置?

r - 更改 ggplot 中的千位分隔符

r - 无法执行 rsDriver(连接被拒绝)