好吧,这就是我所做的:
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"
那么,为什么结果不同呢?我想 R 处理这些事情的方式略有不同,我想了解到底是如何处理的。如果您知道的话,也非常欢迎一本涵盖这些细微差别的 R 手册。
最佳答案
如果您已定义x
作为全局环境中的数字,当您使用 as.expression(x^2)
时该函数将尝试转换 x
的内容而不是表达式的名称。
参见:
x = 1
as.expression(x^2)
# expression(1)
所以当你运行 D(as.expression(x^2), "x")
时你实际上正在运行 D(expression(1), "x")
这是零。
关于R表达式和as.表达式之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34393256/