2016-06-22 16 views
2

Ich versuche eval() Funktion in R zu verwenden, um Ausdrücke zu berechnen. Ich erhalte die Formel aus einem Datenrahmen und speichern Sie es in einer Variablen sagen 'Form'. Jetzt habe ich versucht, diesen Ausdruck zu bewerten wie folgt:eval() Funktion in 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]) 

Ich erhalte das Ergebnis als „x + y + z“ anstelle von 6. Wenn ich direkt die Formel in die expr = expression(..) passieren, erhalte ich die Korrektes Ergebnis, aber ich konnte das nicht tun, weil ich die Formel von einem anderen Datenrahmen abrufe. Bitte vorschlagen.

Antwort

4

expression tut nicht, was Sie denken, dass es tut. Sie müssen stattdessen parse verwenden:

expr = parse(text = form) 
+0

Vielen Dank Konrad, es hat funktioniert. –

+1

@Rbud -> wenn es funktioniert, best practice = akzeptiere Konrads Antwort. :) –

+0

Ich konnte nicht innerhalb von 10 Minuten nach der Veröffentlichung meiner Frage :). So war es jetzt –