r - typeof 调用与 typeof 表达式

标签 r

R 语言指出:“构成 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"

我希望调用的类型为call,但它们是更通用的类型语言

typeof(cl)
# [1] "language"

有谁知道这背后是否有任何合理性?我错过了一些重要的事情吗?

预先感谢您的支持

最佳答案

typeof 返回有关存储机制的信息。这就是 typeof( Factor(letters) ) 返回 integer 的原因。

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

> class(cl)
[1] "call"

?typeof 帮助页面还向您推荐 ?storage.mode,其中包含更多详细信息,尽管 typeof 更“基本” "函数的意义是 storage.mode 是使用 typeof 定义的:

> storage.mode(cl)
[1] "language"

R 表达式和调用之间的差异有时会让我感到困惑。 bquote 函数返回一个 call 对象,而不是“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)  #Failure

关于r - typeof 调用与 typeof 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37574281/

相关文章:

R : Swapping 2 values in a nested list

sql - 通过 R sqlSave 更新 SQL 表

r - 在 Shiny 的应用程序上,ggplotly() 渲染的大小是 plot_ly() 的一半。如何解决?

r - 大规模使用唯一值(for loops、apply 或 plyr)

r - 如何将向量分配给 dplyr mutate 中的多个变量

r - 从函数内部获取函数的环境

r - 矩阵和向量形式的数据点数量

r - packrat:从 src 目录中删除旧包版本

regex - 在 R 中使用未转义的分隔符拆分字符串

python - 从一个表中提取小时值并在另一个表中填充一小时增量的 "buckets"的函数