购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 基本数据类型

R语言是面向数据科学的编程语言,它支持多种数据类型,而且还可以根据用户的需要来定义新的数据类型。这里,我们介绍比较基本的数据类型,即数值型、逻辑型、字符型和因子型。

2.3.1 数值型

数值型数据是最常见的数据,如12345、99999等。我们可以使用 class 函数来探查数据的类型:

class(12345)
## [1] "numeric"

实际上,数值型数据还可以分为两种类型,即整数型(integer)和双精度型(double)。一般在R语言中输入数字,会被自动认为双精度型。我们可以使用 typeof 函数进行查看:

typeof(1)
## [1] "double"
typeof(1.0)
## [1] "double"

两者都被识别为双精度类型,如果需要声明使用的数据是整数型,那么需要在数值后面加上 L

typeof(1L)
## [1] "integer"

2.3.2 逻辑型

逻辑型数据是用于进行条件判断的数据类型,只有两种数值,即真(TRUE)和假(FALSE),在R语言中分别可以使用T和F表示。要获得逻辑值,可以使用比较的操作符,如大于(>)、大于或等于(>=)、小于(<)、小于或等于(<=)、等于(==)、不等于(!=)。下面用代码进行演示:

1 > 0
## [1] TRUE
1 > 3
## [1] FALSE
2 == 2
## [1] TRUE
2 != 2
## [1] FALSE
4 <= 5
## [1] TRUE

逻辑型数据是 if 语句接收条件的数据类型,在R语言中用途非常广泛。可以使用 class 函数来查其数据类型:

class(1 > 0)
## [1] "logical"

可以看到,显示的是逻辑型数据(logical)。需要进行特别声明的是,在R语言中缺失值(NA)的数据类型也被归为逻辑型数据,在做分析的时候需要特别注意:

class(NA)
## [1] "logical"

2.3.3 字符型

所有文本类型的数据都属于字符型,如“abc”“复旦大学”,在R语言中需要在前后附上双引号或单引号进行定义。查看其数据类型:

class("abc")
## [1] "character"
class("复旦大学")
## [1] "character"

可以看到,它们都属于字符型(character)。字符型数据也可以相互比较,一般而言我们可以使用“==”或“!=”符号来判断两个文本是不是完全一致:

"hope" == "hope"
## [1] TRUE
"hope" != "Hope"
## [1] TRUE

2.3.4 因子型

因子型数据是R语言中非常特殊的一种数据类型,它可以被视为把字符型数据以数值型保存的特殊格式:

# 利用factor函数创造因子变量
a = factor("男")
a
## [1] 男
## Levels: 男
class(a)
## [1] "factor"

由于字符型数据往往占用内存较大,如果有很多重复的字符,那么利用数字来对字符进行标记,然后直接保存数值、数值与字符的对应关系,这样就可以节省内存。这提高了计算性能,但是也给分析带来了一些麻烦,需要额外注意。这里,我们使用 as 系列函数来进行强制类型转换,看看因子变量的字符形态和数值形态分别是什么:

as.numeric(a)
## [1] 1
as.character(a)
## [1] "男"

我们可以看到,其数值由 1 来记录,而所记录的字符则为“男”。

2.3.5 类型判断与转换

数据类型的判断和转换可以分别使用 is 系列函数和 as 系列函数进行实现。例如,我们要判断一个数据是否为数值型,就可以使用 is.numeric 函数进行实现:

is.numeric(12345)
## [1] TRUE
is.numeric("hello")
## [1] FALSE

可以看到,返回的数据是逻辑型,告诉用户这个变量是否属于数值型。在2.3.4节中,我们尝试对因子变量进行数据类型的转换,但实际上不是所有数据都可以相互转换的。例如数值型数据都可以转换为字符型,但是字符型的变量却不能够直接转换为数值型(会返回缺失值NA,并输出警告): 9nm/ulGQYRmXSvFb3z+41udSqwuG5+WC3QZhlYETAfGyuZB6FzZAuvmc2BbzjVrL

as.character(12345)
## [1] "12345"
as.numeric("hello")
## Warning: NAs introduced by coercion
## [1] NA
点击中间区域
呼出菜单
上一章
目录
下一章
×