R语言中的几种数据结构

Python029

R语言中的几种数据结构,第1张

R语言中的几种数据结构

一 R中对象的5种基本类型

字符(character)

整数 (integer)

复数(complex)

逻辑(logical:True/False)

数值(numeric:real numbers)

查看对象类型的命令:class(x)

二 R语言中有如下几种数据结构:

向量 vector() 组内元素必须类型一致,否则将会被强制转换。

(1) 创建向量的三种方式:

<span style="font-size:18px">x <- vector("numeric", length = 10)

x <- 1:4

x <- c("a",12,TRUE)</span>

(2) 强制转换的几个函数

as.numeric(x) / as.character(x) / as.logical(x)

矩阵 matrix()一列一列的填充元素

按行合并:rbind()按列合并:cbind()

数组 array() 可以有多个维度

列表 list() 可以包含不同类型的元素

因子 factor()

(1) 分类数据/有序 vs. 无序

(2) 整数向量+标签(label)(优于整数向量)

Male/Female vs. 1/2

常用于lm(),glm()

(3) levels设置基线水平

table() 查看因子信息unclass() 去除因子属性日期

x <- Sys.Date() 得到系统当前日期

julian(x) x距离1970-01-01的天数

时间 POSIXct / POSIXlt

POSIXct:整数,常用于存入数据框 as.POSIXct()

POSIXlt:列表,还包含星期、年月日等信息。as.POSIXlt()

strptime(x, format = "...") 将一般格式转化为时间格式

R语言中的switch与其它语言中的switch有很大区别。

在R中,switch函数的语法形式如下:

其中,expr为表达式,其值或为一个整数值或为一个字符串;list为一个列表。

运行机理:若expr的计算结果为整数,且值在1~length(list)之间时,则switch()函数返回列表相应位置的值。若expr的值超出范围,则没有返回值(老版本的R中返回NULL)。

例1:

由该例可知,x的值为2,则switch函数根据传入的值2,输出列表中的第2个值:国家纳米科学中心。

例2:看看下面两个例子的输出值是多少:

若switch()中的参数list是有名定义时,则当expr等于元素名时,返回变量名对应的值,否则没有返回值。

例3:

you.like<-"fruit"

switch(you.like, drink="water", meat = "beef", fruit = "apple", vegetable="cabbage")

我们使用switch函数的这一性质可以定义一个函数实现多种操作:

R语言的switch结构是常用的一种结构

工具/原料

R语言开发环境

R语言开发工具

方法/步骤

打开R语言开发工具,RGui

R语言switch的使用方法

先定义一个向量

R语言switch的使用方法

使用for结构对switch进行循环输出

R语言switch的使用方法

编写switch结构的语言

R语言switch的使用方法

回车后,根据print函数输出switch函数的结构

R语言switch的使用方法

6

应用解析:for对向量bd进行循环,

通过print对switch定义的结构判断结构中符合向量的要求,

然后把符合要求的输出!

1. NaN

R中的无定义数用NaN表示,即“Not a Number(非数)”。

不过在R中,R实际上是把NaN视作一个数的,当其参与运算时,返回结果总是NaN。我们可以使用is.nan()函数来检测计算结果有无定义,但是需要注意的是,对于NaN而言,is.finite()和is.infinite()都会返回FALSE。

2. NA

NA表示缺失值,即“Missing value”,是“not available”的缩写

3. Inf

R中的无穷大用Inf表示(即Infinity,无穷大),负无穷表示为-Inf。

要检查一个数是否为无穷,可以使用is.finite()或者is.infinite()函数

3. NULL

R语言中,NA代表位置上的值为空,NULL代表连位置都没有,变量为空,其长度为0,表明“空无一物”

将两个数据进行除法运算

而log2_foldchange就是我们需要的数据,发现里面有许多 NaN、 -Inf 、Inf ,想办法进行数据清洗。

都到这一步了,再绘制两个图形玩玩: