在 R 语言中,get("abc") 和 eval(parse(text="abc")) 有什么区别?

4

我想了解这两个操作之间的区别;在这个例子中,它们似乎起到相同的作用,但一定有情况下其中一个会起作用而另一个不会。我只是无法想象出这种情况。

> a <- 298
> eval(parse(text = "a"))
[1] 298
> get("a")
[1] 298

提前感谢您的帮助。

1个回答

3
在您的例子中,这两个函数的作用相同。 但是当您想要评估特定形式的表达式时,差异就会显现出来,例如:
eval(parse(text = "x <- 1"))
eval(parse(...))命令会在输入中评估表达式,而get只会返回其中存储的值,在这个特殊的例子中,使用get是行不通的,因为它是一个表达式(而不是一个变量)。因此,eval(parse(...))主要用于评估您在程序中构造的表达式(通过使用paste等)。

1
当然,如果你搜索“R fortune() eval(parse”,你会得到一个著名的引用 :-) - Carl Witthoft

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接