[英]Evaluating mathematical expression in R
我有一個包含數學表達式的向量作為向量的第一個索引,請參見下文
(A+(B*C)/D)
其中A,B,C和D是我的data.table的字段名稱,現在我想向我的data.table添加一個新的field( result ),應根據矢量中包含的表達式進行求值(上面提供的示例) )
作為解決方案,我遍歷數據表的每個記錄和每個字段以計算每一行的值,我認為這可能不是R中的最佳解決方案,因此想檢查是否還有其他可能解決我的問題。
我不想使用諸如dt $ A,dt $ B之類的基本R操作,因為它減慢了該過程。我的表情是來自閃亮應用程序的用戶輸入,因此我無法對字段名進行硬編碼
感謝幫助。
您可以在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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.