R-lang声明:“有三种类型的对象构成R语言。它们是调用、表达式、.”
这是一种表达和呼吁:
ex <- expression(max(1:3))
cl <- call("max", x = 1:3)它们都是语言对象:
is.language(ex)
# [1] TRUE
is.language(cl)
# [1] TRUE表达式的类型为表达式
typeof(ex)
# [1] "expression"我原以为调用是类型调用,但它们是更通用的类型语言。
typeof(cl)
# [1] "language"有人知道这背后有没有理性吗?我错过了什么重要的事情吗?
谢谢您的支持
发布于 2016-06-01 20:57:38
typeof返回有关存储机制的信息。这就是为什么typeof( factor(letters) )返回integer。
使用class函数查询对象通常比使用typeof提供更多的信息。
> class(cl)
[1] "call"?typeof帮助页面还向您提供了更详细的?storage.mode,尽管typeof是使用typeof定义的更为“基本”的函数。
> storage.mode(cl)
[1] "language"R表达式和呼叫之间的差异偶尔会让我感到震惊。bquote函数返回一个call-object,而不是"true“R表达式。有一次,这导致格绘图函数拒绝对来自bquote的结果进行绘图评估,尽管我认为故障已经解决了。您还应该熟悉替换的操作以及它如何解析其论点的不同之处:
substitute( expression(max(1:3)), list(max=min))
#expression(.Primitive("min")(1:3)) # Success
substitute( call('max', x=1:3), list(max=min))
#call("max", x = 1:3) #Failurehttps://stackoverflow.com/questions/37574281
复制相似问题