首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型调用与类型表达式

类型调用与类型表达式
EN

Stack Overflow用户
提问于 2016-06-01 16:36:33
回答 1查看 208关注 0票数 2

R-lang声明:“有三种类型的对象构成R语言。它们是调用、表达式、.”

这是一种表达和呼吁:

代码语言:javascript
复制
ex <- expression(max(1:3))
cl <- call("max", x = 1:3)

它们都是语言对象:

代码语言:javascript
复制
is.language(ex)
# [1] TRUE
is.language(cl)
# [1] TRUE

表达式的类型为表达式

代码语言:javascript
复制
typeof(ex)
# [1] "expression"

我原以为调用是类型调用,但它们是更通用的类型语言。

代码语言:javascript
复制
typeof(cl)
# [1] "language"

有人知道这背后有没有理性吗?我错过了什么重要的事情吗?

谢谢您的支持

EN

回答 1

Stack Overflow用户

发布于 2016-06-01 20:57:38

typeof返回有关存储机制的信息。这就是为什么typeof( factor(letters) )返回integer

使用class函数查询对象通常比使用typeof提供更多的信息。

代码语言:javascript
复制
> class(cl)
[1] "call"

?typeof帮助页面还向您提供了更详细的?storage.mode,尽管typeof是使用typeof定义的更为“基本”的函数。

代码语言:javascript
复制
> storage.mode(cl)
[1] "language"

R表达式和呼叫之间的差异偶尔会让我感到震惊。bquote函数返回一个call-object,而不是"true“R表达式。有一次,这导致格绘图函数拒绝对来自bquote的结果进行绘图评估,尽管我认为故障已经解决了。您还应该熟悉替换的操作以及它如何解析其论点的不同之处:

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37574281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档