我有一个包含数学表达式的向量作为向量的第一个索引,见下文
(A+(B*C)/D)
其中A、B、C和D是我的 data.table 的字段名称,我现在想向我的 data.table 添加一个新字段(结果),该字段应根据向量中包含的表达式进行评估(上面提供的示例) )
作为解决方案,我循环遍历数据表的每个记录和每个字段来计算每一行的值,我认为这可能不是 R 中的最佳解决方案,所以想检查是否还有其他可能我的问题的解决方案。
我不想使用基本的 R 操作,如 dt$A、dt$B 等,因为它会减慢进程速度 另外我的表达式是来自闪亮应用程序的用户输入,因此我无法对字段名称进行硬编码
感谢帮助。
您可以在 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句