R语言实战专题 | 基本数据类型
文:庐州月光 | 编辑:湖心
本文系原创转载需授权
R语言实战专题 | 基本数据类型
对于编程语言的入门来说,首先要搞清楚的就是基本的数据类型。
基本数据类型
在R语言中,常用的数据类型包括下面几种:
从图中可以看到,R中常见的基本数据类型包括 数字(numeric),字符串(character),逻辑值 (logical) 三种。
基本的对象赋值
在R语言中,推荐使用 <- 作为赋值符号
data <- 12
data <- TRUE # 逻辑值有TRUE和FALSE两种,注意逻辑值两端没有双引号
data <- "ABC" # 字符串使用双引号表示
判断对象类型
R语言中提供了一系列的判断函数,全部以is 开头
is.numeric
is.integer
is.double
is.logical
is.character
is系列函数判断对象的类型,如果和预期的一致,返回TRUE, 否则返回FALSE,举个例子,is.numeric 判断一个对象是否为数值型
> data <- 12
> is.numeric(data)
[1] TRUE
> is.integer(data)
[1] FALSE
> data <- 12L
> is.numeric(data)
[1] TRUE
> is.integer(data)
[1] TRUE
这里有一个写法,12L , 这里的L用来强调这个对象为整数,从结果我们可以看到,data 的值为12 时, is.interger 返回值为FALSE , 表明data 并不是一个整数只有当data 的值为12L时, is.integer 的返回值为TRUE
不同数据类型之间的转换
R语言中提供了一系列的转换函数,全部以as 开头
as.numeric
as.interger
as.double
as.character
as.logical
常见的转换规则有下列4种:
1) 数字转换成字符串:直接在两端加双引号
> data <- 12
> as.character(data)
[1] "12"
2)数字转换成逻辑值:非零数字转换成TRUE, 零转换成FALSE
> data <- 0
> as.logical(data)
[1] FALSE
> data <- 1
> as.logical(data)
[1] TRUE
3) 逻辑值转换成数字:TRUE 转换成1,FALSE转换成0
> data <- TRUE
> as.numeric(data)
[1] 1
> data <- FALSE
> as.numeric(data)
[1] 0
4) 逻辑值转换成字符串:直接在两端加双引号
> data <- FALSE
> as.character(data)
[1] "FALSE"
> data <- TRUE
> as.character(data)
[1] "TRUE"
在R语言中,提供了上述4种默认的转换规则,对于其他类型之间的转换,虽然可以用上边提供的函数进行强制装换,但是强制转换的结果是产生了NA,举个例子,将字符串强制转换成数值
> data <- "A"
> as.numeric(data)
[1] NA
Warning message:强制改变过程中产生了NA
typeof 函数用来判断一个对象的类型,功能和is 系列函数类似
> typeof(NA)
[1] "logical"
> typeof(NULL)
[1] "NULL"
> typeof(NaN)
[1] "double"
NaN 的类型是数值型,在R语言中,表达式中出现被除数为0并不会报错
> data <- 1/0
> data
[1] Inf
> data <- -1/0
> data
[1] -Inf
> data <- 0/0
> data
[1] NaN
inf 代表正无穷, -inf 代表负无穷,而NaN 是由0/0这样的表达式产生的,所以NaN 是一个数值型的对象;NULL 代表空,NA代表缺失值,从字面上看,二者没什么区别,从typeof 函数的返回值可以看到,NA本质上是一个逻辑值的对象,而NULL本身就是一种特殊的类型
我们再通过length 函数看一下二者之间的区别
> data <- NULL
> length(data)
[1] 0
> data <- NA
> length(data)
[1] 1
length函数返回一个对象的长度,从代码的运行结果可以看到,当一个对象的值为NULL 时,其长度为0;而取值为NA时,长度为1, 所以NA 还是有内容的,只不过是不知道具体的取值而已,NULL 就是真的什么都没有了。