评估R中的数学表达式

Roh*_*uja 1 math r

我有一个包含数学表达式的向量作为向量的第一个索引,见下文

(A+(B*C)/D)
Run Code Online (Sandbox Code Playgroud)

其中A,B,CD是我的data.table的字段名称,我现在想要在我的data.table中添加一个新字段(结果),该字段应根据向量中包含的表达式进行评估(上面提供的示例) )

作为它的解决方案,我循环遍历每个记录和数据表的每个字段来计算每一行的值,我认为这可能不是R中的最佳解决方案,所以想要检查是否还有其他可能的解决我的问题.

我不想使用像Dt $ A,dt $ B等基本R操作,因为它减慢了进程.此外我的表达式是来自闪亮应用程序的用户输入,所以我不能硬编码字段名称

感谢帮助.

Lyz*_*deR 5

您可以在data.table的环境中评估字符串.作为一个简单的例子:

#parse the text first
express <- parse(text = 'A+(B*C)/D')

#dummy data 
library(data.table)
dt <- data.table(A = runif(5),
                 B = runif(5),
                 C = runif(5),
                 D = runif(5))

#using eval
eval(express, envir = dt)
#[1] 0.2654480 0.6818451 0.7611150 5.5714248 2.8076066
Run Code Online (Sandbox Code Playgroud)