附录A 变量的属性

R有四种不同的函数能告诉你变量的类型是什么,即classtypeofmodestorage.mode。对于某些变量类型,这些函数给出的答案都相同,但对于其他的函数则有点不同,这让事情变得有点复杂。

对于绝大部分你所编写的代码,你只需关心其class类型。class唯一不能帮你的是在检查矩阵或数组时,变量是否包含数字或字符(或其他类型)。在这种情况下,你可以使用其他三种类型的函数之一,或只调用is.*函数(例如is.numeric)中的一个。

表A-1显示了classtypeofmodestorage.mode对各种变量类型返回的值。

表A-1:不同类、类型、模式和存储模式之间的比较

  class typeof mode storage.mode
Logical logical logical logical logical
Integer integer integer numeric intege
Floating Point numeric double numeric double
Complex complex complex complex complex
String character character character character
Raw byte raw raw raw raw
Categorical factor integer numeric integer
Null NULL NULL NULL NULL
Logical Matrix matrix logical logical logical
Numeric Matrix matrix double numeric double
Character Matrix matrix character character character
Logical Array array logical logical logical
Numeric Array array double numeric double
Character Array array character character character
List list list list list
Data Frame data.frame list list list
Function function closure function function
Environment environment environment environment environment
Expression expression expression expression expression
Call call language call language
Formula formula language call language

在R中,向量是具有长度但没有维度的(即dim会返回NULL),以及除了名字以外没有属性的变量类型。向量类型包括了数值、逻辑和字符类型,而且还包括列表和表达式。无属性的规则意味着因子不是向量。

提示

列表是向量。因子不是向量。

与向量相关的是原子(atomic)类型。原子表示此类型不可以把相同类型的其他实例包含在内。与原子相反的类型是递归(recursive):列表就是典型的例子,因为它可以把其他列表包含在内。一个对象永远只能是原子或递归的,不可能兼顾。

提示

矩阵和数组都是原子的。

有些对象被称为语言对象(language objects)。这些变量类型可被解析为R程序运行。

表A-2显示了is.vectoris.atomicis.recursiveis.language对各种变量类型的返回值。

表A-2:矢量、原子、递归或语言对象变量类型的比较

is.vector is.atomic is.recursive is.language
Logical TRUE TRUE FALSE FALSE
Integer TRUE TRUE FALSE FALSE
Floating Point TRUE TRUE FALSE FALSE
Complex TRUE TRUE FALSE FALSE
String TRUE TRUE FALSE FALSE
Raw Byte TRUE TRUE FALSE FALSE
Categorical FALSE TRUE FALSE FALSE
Null FALSE TRUE FALSE FALSE
Logical Matrix FALSE TRUE FALSE FALSE
Numeric Matrix FALSE TRUE FALSE FALSE
Character Matrix FALSE TRUE FALSE FALSE
Logical Array FALSE TRUE FALSE FALSE
Numeric Array FALSE TRUE FALSE FALSE
Character Array FALSE TRUE FALSE FALSE
List TRUE FALSE TRUE FALSE
Data Frame FALSE FALSE TRUE FALSE
Function FALSE FALSE TRUE FALSE
Environment FALSE FALSE TRUE FALSE
Expression TRUE FALSE TRUE TRUE
Call FALSE FALSE TRUE TRUE
Formula FALSE FALSE TRUE TRUE