其他

R语言实战专题 | 基本数据类型

2017-08-08 生信控

文:庐州月光 | 编辑:湖心

本文系原创转载需授权


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



NA可以看做R中一种特殊类型,也叫缺失值,在R语言中,NA, NaN, NULL 经常混淆。我们通过typeof 函数来看下这3者之间的区别

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 就是真的什么都没有了。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存