问题
I've been told that it is a bad habit to parse and evaluate a character string
to_run = "for (i in 1:10){print(i);print('Hello World!')}"
eval(parse(text=to_run))
Why is it a bad habit?
It seems to me to be quite a flexible way of programming as we can construct our code in a iterative manner by pasting character strings together. For example it allows to easily deal with objects of various dimensions for example.
if (length(dim(my.array)) == 2){to_run = "A = my.array[1,]"}
if (length(dim(my.array)) == 3){to_run = "A = my.array[1,,]"}
eval(parse(text=to_run))
回答1:
Self-modifying code is much more difficult to understand than to write. The example you gave has a perfectly valid R equivalent:
if (length(dim(my.array)) == 2) {
A = my.array[1,]
} else if (length(dim(my.array)) == 3)
A = my.array[1,,]
来源:https://stackoverflow.com/questions/20678930/why-is-it-a-bad-habit-to-parse-and-evaluate-a-string-code-in-r