R-模式(mode)和类(class)
数据模式:mode函数显示任何对象的模式。常见的单个的对象模式是逻辑型(Logical)、数值型(Numeric)、字符型(Character)。
常用到的数据模式是列表(list)。
- 逻辑型:TRUE和FALSE都是大写字母;转换成数值型时TRUE->1,FALSE->0。
- 字符型:输入字符型时可以用单引号或者双引号,而输出时都是双引号
- 列表:允许多种模式的数据,数据框也是一种列表。而矩阵、向量等要求所有数据都属于相同的模式。
数据模式之间的转换:
- as.character->转换为字符型
- as.numeric->字符型转换数值型
- as.logical->字符型转换逻辑型
数据类型:class函数显示对象的类。常见的有向量(Vertor),数据框(Frame),矩阵(Matrix),因子(Factor)。
- 因子:在统计建模和制图函数中对因子进行特殊处理。但是用mode函数检查时一律返回为数值型。
- 日期和时间:虽可以以字符型存储,但不方便应特殊处理。
数据模式和数据类型的检测:
- 列表允许多种模式的数据,若想获得各个组成部分的模式和类时,可以使用sapply函数。
- 数据框的模式是list,类是data.frame。
- 有时候mode和class函数返回相同的结果。
- 以"is."开头的很多函数如is.list,is.factor,is.numeric,is.character等,能让你确认是否跟你预期的相同。
> mylist = list(a = c(1,2,3),b = c('a','b','c'),c = c(TRUE,FALSE),d = factor('house')); > sapply(mylist,mode) a b c d "numeric" "character" "logical" "numeric" > sapply(mylist,class) a b c d "numeric" "character" "logical" "factor" a = c(1,2,3); b = c('a','b','c'); c = c(TRUE,FALSE); d = factor('house'); > is.numeric(a) [1] TRUE > is.character(b) [1] TRUE > is.logical(c) [1] TRUE > is.factor(d) [1] TRUE > is.numeric(d) [1] FALSE #注意对d并不是数值型,返回FALSE。