在所有编程语言中, 变量提供了一种访问内存中数据的方法。 R 没有提供直接访问计算机内存的方法, 但提供了许多我们称之为对象的特殊数据结构。 这些对象通过变量或者符号(symbol)访问。不过在 R 语言里面, 符号本身就是对象并且和使用其它对象一样的方式使用。 这和许多其它语言不同,但有广泛的影响。
在本章,我们会给出R里面各种数据结构的初步描述。
对这些数据结构更为详细的讨论会在后面的章节中展开。
R语言特有的函数 typeof
返回R对象的类型。注意在
R 底层的 C 代码中,所有对象都是指向一个有类型定义
SEXPREC的结构体(structure)的指针;不同的R数据类型在 C 里面用
决定结构体各部分信息的 SEXPTYPE 表示。
下面的表格描述了
typeof 可能的返回值以及它们的涵义。
我认为用户不用深入以`***'标记的条目,至少没有想象的那么容易; 但是可以多看一些例子。
根据 Becker,Chambers & Wilks (1988)中的说明,函数 mode 返回对象的 模式信息,
并且和其它S语言的变种完全兼容。
最后,同样基于Becker et al. (1988)的考虑,函数storage.mode返回其
参数的存储模式(storage mode)。
该函数常常用于,在外部语言(如C或FORTRAN)中调用函数时确保R对象
有被调用的程序所期望的数据对象。(在S语言里面,整数值或实数值向量都是
"numeric"模式,因此它们的存储模式需要
区分。)
> x <- 1:3
> typeof(x)
[1] "integer"
> mode(x)
[1] "numeric"
> storage.mode(x)
[1] "integer"
R 在计算过程中,对象常常需要强制转换成 不同的类型(type)。 有许多函数可用于显式的强制转换。 在仅仅用 R 语言编程的时候,一个对象的类型通常不会影响计算结果, 但是当混合使用外部编程语言或不同的操作系统时, 常常需要保证对象类型的正确。