329 Stimmen

Ausdruck in Form einer Zeichenkette auswerten

Ich bin neugierig zu wissen, ob R seine eval() Funktion, um Berechnungen durchzuführen, die z. B. durch eine Zeichenkette bereitgestellt werden.

Dies ist ein häufiger Fall:

eval("5+5")

Anstelle von 10 erhalte ich jedoch:

[1] "5+5"

Gibt es eine Lösung?

19voto

David J. Bosak Punkte 1081

Ich bin mir nicht sicher, warum niemand zwei Base R-Funktionen speziell für diese Aufgabe erwähnt hat: str2lang() y str2expression() . Dies sind Varianten von parse() , sondern scheinen den Ausdruck sauberer zurückzugeben:

eval(str2lang("5+5"))

# > 10

eval(str2expression("5+5"))

# > 10

Ich möchte auch den Postern widersprechen, die sagen, dass jeder, der dies versucht, falsch ist. Ich lese R-Ausdrücke ein, die als Text in einer Datei gespeichert sind, und versuche, sie auszuwerten. Diese Funktionen sind perfekt für diesen Anwendungsfall.

9voto

c1au61o_HH Punkte 791

Ähnlich verhält es sich mit rlang :

eval(parse_expr("5+5"))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X