【问题标题】:Why is it a bad habit to parse and evaluate a string code (in R)? [duplicate]为什么解析和评估字符串代码(在 R 中)是一个坏习惯? [复制]
【发布时间】:2013-12-19 10:19:37
【问题描述】:

有人告诉我,解析和评估字符串是个坏习惯

to_run = "for (i in 1:10){print(i);print('Hello World!')}"

eval(parse(text=to_run))

为什么这是一个坏习惯?

在我看来这是一种非常灵活的编程方式,因为我们可以通过将字符串粘贴在一起以迭代方式构建我们的代码。例如,它可以轻松处理各种尺寸的对象。

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))

【问题讨论】:

  • 除其他外,您不认为从长远来看这会降低您的代码的灵活性和可重用性吗?

标签: r parsing expression eval


【解决方案1】:

自修改代码比编写更难理解。您给出的示例具有完全有效的 R 等效项:

if (length(dim(my.array)) == 2) {
  A = my.array[1,]
} else if (length(dim(my.array)) == 3)
  A = my.array[1,,]

【讨论】:

  • 好的,好点。它使代码更易于阅读和理解。
猜你喜欢
  • 2021-06-25
  • 1970-01-01
  • 2014-01-28
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
  • 2023-04-06
  • 2014-06-24
  • 1970-01-01
相关资源
最近更新 更多