|
我们已经看到R通过一些对象来运行,当然首先这些对象是用它们的名称
和内容来刻画的,其次也通过对象的数据类型即属性来刻画。为了理解这些
属性的用处,我们以一个在f1,2,3g中取值的变量为例:这个变量可以是一个
整数变量(例如巢中蛋的个数),或者也可以是一个分类变量的编码(例如
某些甲壳类动物的三种性别:雄、雌和雌雄同体)。
显然对这个变量的统计分析在以上两例中将是不相同的,对象的属性
在R中提供着所需的信息。更技术性也更一般地说,对于作用于一个对象的函
数,其表现将取决于对象的属性。
所有的对象都有两个内在属性:类型和长度。类型是对象元素的基本种
类,共有四种:数值型,字符型,复数型7和逻辑型(FALSE或TRUE),虽然也
存在其它的类型,但是并不能用来表示数据,例如函数或表达式;长度是对
象中元素的数目。对象的类型和长度可以分别通过函数mode和length得到。
> x <- 1
> mode(x)
[1] "numeric"
> length(x)
[1] 1
> A <- "Gomphotherium"; compar <- TRUE; z <- 1i
> mode(A); mode(compar); mode(z)
[1] "character"
[1] "logical"
[1] "complex"
无论什么类型的数据,缺失数据总是用NA(不可用)来表示;对很大的数
值则可用指数形式表示:
> N <- 2.1e23
> N
[1] 2.1e+23
R可以正确地表示无穷的数值,如用Inf和-Inf表示§1,或者用NaN(非
数字)表示不是数字的值。
> x <- 5/0
> x
[1] Inf
> exp(x)
[1] Inf
> exp(-x)
[1] 0
> x - x
[1] NaN
字符型的值输入时须加上双引号",如果需要引用双引号的话,可以
让它跟在反斜杠n后面;这两个字符合一起n"在某些函数如cat的输出显示
或write.table写入磁盘(参见p. 14,函数的qmethod选项)时会被以特殊的方式
处理。
> x <- "Double quotes \" delimitate R's strings."
> x
[1] "Double quotes \" delimitate R's strings."
> cat(x)
Double quotes " delimitate R's strings.
也有另一种表示字符型变量的方法,即用单引号(')来界定变量,这种情
况下不需要用反斜杠来引用双引号(但是引用单引号时必须要用!)
> x <- 'Double quotes " delimitate R\'s strings.'
> x
[1] "Double quotes \" delimitate R's strings."
下表给出了表示数据的对象的类别概览:
对象类型是否允许
同一个对象中
有多种类型?
向量数值型,字符型,复数型,或逻辑型否
因子数值型或字符型否
数组数值型,字符型,复数型,或逻辑型否
矩阵数值型,字符型,复数型,或逻辑型否
数据框数值型,字符型,复数型,或逻辑型是
时间序列(ts) 数值型,字符型,复数型,或逻辑型否
列表数值型,字符型,复数型,逻辑型, 是
函数,表达式,. . .
向量是一个变量,其意思也即人们通常认为的那样;因子是一个分类变
量;数组是一个k维的数据表;矩阵是数组的一个特例,其维数k = 2。注
意,数组或者矩阵中的所有元素都必须是同一种类型的;数据框是由一个
或几个向量和(或)因子构成,它们必须是等长的,但可以是不同的数据类
型;“ts”表示时间序列数据,它包含一些额外的属性,例如频率和时间;
列表可以包含任何类型的对象,包括列表!
对于一个向量,用它的类型和长度足够描述数据;而对其它的对象则另
需一些额外信息,这些信息由外在的属性给出。这些属性中的是表示对象维
数的dim,比如一个2行2列的的矩阵,它的dim是一对数值[2,2],但是其长度
是4。 |
|