我有 Python 和 C++ 等常规编程语言的背景。我最近开始使用 R 语言进行一些数据分析,我很难理解什么是 R 中的 symbol 和 expression 对象,以及为什么不需要等价物Python 或 C++ 中的对象。
R语言示例代码如下:
z <- expression(x+y)
x <- 1
y <- 2
eval(z)
请您参考如下方法:
这是一个数学表达式,或者更确切地说,是一个可以计算的 R 语法正确表达式。我不知道 python 中的等效项,因为解析和评估是使用函数 eval 完成的,而在 R 中,解析和评估需要两个阶段。
举个例子
python :
x = 1
y = 2
eval("x+y")
Out[376]: 3
现在用 R 做同样的事情,我们有:
x = 1
y = 2
z = parse(text="x+y")
eval(z)
[1] 3
可以看出两者的区别在于解析部分。在 python 中,这是在 eval 函数中完成的,而在 R 中,这是独立完成的。
现在解析的结果对象就是所谓的表达式:
class(z)
[1] "expression"
typeof(z)
[1] "expression"
如您所见,解析获取指定语言对象的输出只是一个表达式。这在评估时会为您提供关于该语言的对象。由于 python 中的 eval 对 python 对象进行解析和求值,我认为 python 中没有等价的表达式
