Es gibt mehrere Fragen auf, wie eval(parse(...))
Was genau sind die Gefahren von eval (parse (...))?
zu vermeiden, mit dem der Fragen Funken:
- Warum sollte Insbesondere
eval(parse())
vermieden werden? - Und am wichtigsten, Was sind die Gefahren?
- Gibt es irgendwelche gefährlichen, wenn der Code nicht in der Produktion verwendet wird? (Ich denke, jede Gefahr von unbeabsichtigten Ergebnissen immer wieder. Klar, wenn Sie nicht vorsichtig sind, was Sie Parsen, werden Sie Probleme haben. Aber ist das nicht mehr gefährlich als mit
get()
nachlässig zu sein?)
- Gibt es irgendwelche gefährlichen, wenn der Code nicht in der Produktion verwendet wird? (Ich denke, jede Gefahr von unbeabsichtigten Ergebnissen immer wieder. Klar, wenn Sie nicht vorsichtig sind, was Sie Parsen, werden Sie Probleme haben. Aber ist das nicht mehr gefährlich als mit
Ich weiß nicht, ob ich Zeit haben werde, ein gutes Beispiel zu schreiben/eine richtige Antwort zu schreiben, aber meine Kopfschmerzen in dieser Richtung hatten mehr mit 'eval()' als mit 'eval (parse ()) '. Das Problem mit 'eval()' ist, dass es versucht, einige grundlegende, aber oft schwer verständliche Regeln zu den Frames zu befolgen, in denen der Ausdruck ausgewertet wird, und diese können Sie häufig bei komplexeren Code-Konstrukten beißen als der Autor ursprünglich dachte ... http://obeautifulcode.com/R/How-R-Searches-And-Finds-Stuff/ –
@BenBolker, scheint diese Frage immer noch viele Suchergebnisse zu treffen. Wenn Sie Ihren Kommentar weiter oben erläutern möchten, würde ich gerne mehr von Ihren Gedanken hören, da ich mir sicher bin, dass andere dies auch tun würden. –
@Ricardo Saporta, Sie scheinen es zu genießen, 'data.table' zu verwenden. Interessanterweise stieß ich auf einen [post] (https://stackoverflow.com/a/10676138/5193830), wo erklärt wird, dass 'eval' in einigen Fällen schneller als' get' sein kann mit 'data.table' – Valentin