What specifically are the dangers of eval(parse(...))?
eval, parsing, r
Solution
Most of the arguments against `eval(parse(...))` arise not because of security concerns, after all, no claims are made about R being a safe interface to expose to the Internet, but rather because such code is generally doing things that can be accomplished using less obscure methods, i.e. methods that are both quicker and more human parse-able. The R language is supposed to be high-level, so the preference of the cognoscenti (and I do not consider myself in that group) is to see code that is both compact and expressive.
So the danger is that `eval(parse(..))` is a backdoor method of getting around lack of knowledge and the hope in raising that barrier is that people will improve their use of the R language. The door remains open but the hope is for more expressive use of other features. Carl Witthoft's question earlier today illustrated not knowing that the `get` function was available, and the question he linked to exposed a lack of understanding of how the `[[` function behaved (and how `$` was more limited than `[[`). In both cases an `eval(parse(..))` solution could be constructed, but it was clunkier and less clear than the alternative.
Problem
There are several questions on how to avoid using `eval(parse(...))` - r-evalparse-is-often-suboptimal - avoiding-the-infamous-evalparse-construct Which sparks the questions: - Why Specifically should `eval(parse())` be avoided? - And most importantly, What are the dangers? - Are there any dangerous if the code is not used in production? (I'm thinking, any danger of getting back unintended results. Clearly if you are not careful about what you are parsing, you will have issues. But is that any more dangerous than being sloppy with `get()`?)