【问题标题】:In R, transform a character string into an operation在 R 中,将字符串转换为操作
【发布时间】:2014-04-29 02:28:58
【问题描述】:

如果我有一个字符向量,我如何告诉 R 将其作为命令执行?

简单示例:

> a <- paste("2", "+", "3")

>a

>[1] "2 + 3"

我希望 R 实际上做 2+3,而不仅仅是打印“a”的内容。

【问题讨论】:

  • 正如答案所提到的,有一种方法可以做到这一点,但它通常不是完成你想要的最好的方法。如果您告诉我们您为什么要这样做,我们可能会为您指出更好的方法。

标签: r function vector command character


【解决方案1】:

这样做的方法是

a <- paste("2", "+", "3")
eval(parse(text = a))

但是,总的来说,这不是一个好主意。通常有更好的方法来做你想做的事情。

> require(fortunes)
> fortune("parse")

If the answer is parse() you should usually rethink the question.
   -- Thomas Lumley
      R-help (February 2005)

在对What specifically are the dangers of eval(parse())? 的回答中,有很多关于为什么eval(parse()) 被认为是“不良做法”的信息;总之就是

  • 容易出错

  • 更难调试

  • 通常有一种更易读的方式来做任何你想做的事情

  • 可能造成安全风险

(尽管最后一个可能不适用于大多数 R 用例)

【讨论】:

  • 有趣。你能扩展你的答案吗?为什么parse 是个坏主意?
  • 非常感谢!的确,你是对的。今天早上我问了我的一个朋友,看了我的代码后,他只是皱着眉头,用两个嵌套的 for 循环重新考虑了一切。
【解决方案2】:
eval(parse(text=paste("2", "+", "3")))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 2022-07-21
    • 2021-03-14
    相关资源
    最近更新 更多