2016-06-22 71 views
2

我试图用R中的eval()函数来计算表达式。 我正在从数据框中检索公式并将其存储在变量中,如'表'。 现在我试图评估该表达式如下:eval()函数R

df 
x y z 
1 2 3 
4 5 6 
7 8 9 

form = "x+y+z" 
expr = expression(form) 
df = data.table::data.table(df) 
result = eval(expr, df[1]) 

我得到的结果是“X + Y + Z”,而不是6 如果我直接通过公式中的expr = expression(..),我得到的正确的结果,但我不能这样做,因为我从其他数据框中检索公式。请建议。

回答

4

expression不会做你认为的事情。您需要使用parse代替:

expr = parse(text = form) 
+0

非常感谢康拉德,它的工作。 –

+1

@Rbud - >如果有效,最佳做法=接受Konrad的答案。 :) –

+0

我不能在10分钟内发布我的问题:)。现在也是这样 –