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"
有谁知道这背后是否有任何理性?我错过了一些重要的事情吗?
提前感谢您的支持
答案 0 :(得分:2)
typeof
返回有关存储机制的信息。这就是typeof( factor(letters) )
返回integer
的原因。
使用class
函数查询对象而不是使用typeof
通常会提供更多信息。
> class(cl)
[1] "call"
?typeof
帮助页面还会引导您?storage.mode
,其中包含更多详细信息,即使typeof
是更多&#34;基础&#34;在使用storage.mode
:
typeof
的意义上的函数
> storage.mode(cl)
[1] "language"
R表达式和调用之间的差异偶尔会让我失望。 bquote
函数返回call
- 对象,而不是&#34; true&#34; R表达。曾经导致格子绘图函数拒绝对bquote
的结果进行plotmath评估,尽管我认为这个故障已得到修复。你也应该熟悉替代品的操作以及它解析它的论据的差异:
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) #Failure