1

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))
Remi.b
  • 17,389
  • 28
  • 87
  • 168

1 Answers1

2

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,,]
krlmlr
  • 25,056
  • 14
  • 120
  • 217