在R中,将字符串转换为操作

时间:2014-03-21 15:58:08

标签: r function vector command character

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

简单示例:

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

>a

>[1] "2 + 3"

我希望R实际上做2 + 3,而不只是打印&#34; a&#34;的内容。

2 个答案:

答案 0 :(得分:3)

这样做的方法是

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

答案 1 :(得分:1)

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