R表达式与as.expression之间的差异

eph*_*ris 5 r

嗯,这就是我做的:

D(expression(x^2),"x")
# 2 * x
D(as.expression(x^2),"x")
# [1] 0
class(as.expression(x^2))
# [1] "expression"
class(expression(x^2))
# [1] "expression"
Run Code Online (Sandbox Code Playgroud)

那么,为什么会有不同的结果?我猜R对这些事情的处理方式略有不同,我想知道究竟是怎么回事.关于R的手册,如果你知道的话,也包括这些细微差别,也是非常受欢迎的.

Car*_*lli 3

x如果您在全局环境中定义了数字,那么当您使用as.expression(x^2)该函数时,将尝试将其内容x而不是其名称转换为表达式。

看:

x = 1
as.expression(x^2)
# expression(1)
Run Code Online (Sandbox Code Playgroud)

所以当你跑步时,D(as.expression(x^2), "x")你实际上是在跑步D(expression(1), "x"),这是零。