《R语言实战》自学笔记28-将函数应用于矩阵和数据框

Python013

《R语言实战》自学笔记28-将函数应用于矩阵和数据框,第1张

数据准备

R函数的诸多有趣特性之一,就是它们可以应用到一系列的数据对象上,包括标量、向量、矩阵、数组和数据框。

R中提供了一个apply()函数,可将一个任意函数“应用”到矩阵、数组、数据框的任何维度上。

apply(x, MARGIN, FUN, ..., simplify = TRUE)

其中,x为数据对象,可以是数组、矩阵、数据框,数据至少是二维的,MARGIN是维度的下标,MARGIN=1表示行,MARGIN=2表示列。FUN是自定义调用的函数,可为任意R函数,而...则包括了任何想传递给FUN的参数。

apply函数只能用于处理矩阵类型的数据,也就是说所有的数据必须是同一类型。因此要使用apply函数的话,需要将数据类型转换成矩阵类型。

lapply(x, FUN)

lapply函数将函数应用于输入变量x的每一个元素,返回一个与x长度相同的列表。x可以是列表,向量或数据框。

sapply(x, FUN)

x可以是列表,矩阵或数据框,以向量或矩阵形式输出结果。执行的功能与lapply函数相同。

tapply(X, INDEX, FUN = NULL)

tapply用于数据框类型的数据,可以按因子变量分组计算统计量。X可以是数组、矩阵、数据框等分割型数据向量,INDEX是一个或多个因子的列表,每个因子的长度都与x相同,FUN为自定义的调用函数。 53

参考资料:

前记:

正文:

部分: 5种数据对象类型

1.1 向量(vector)

1.2 矩阵(matrix)

向量+维度属性(nrow ncol)

1.3 数组(array)

与矩阵相似,但维度可大于2(说白了元素都是数 维度随便设)

1.4 列表(list)

可以包含不同类型

1.5 因子(factor)

整数向量+标签

1.6 缺失值(missing value)

NA:各种类型的缺失值

NAN:数值型的缺失值

NAN 属于 NA

is.na 和 is.nan 判断向量中是否有缺失值

1.7 数据框(data.frame)

存储表格数据,视为各元素长度相同的 列表

1.8 日期与时间(date, time)

日期

时间

POSIXct 整数 常用于存入数据框

POSIXIt 列表 还包括年月日等信息

后续请参考:

R语言基础之第 部分 : 操纵数据 取子集

R语言基础之第 部分:重要函数 apply族函数 的使用

R语言基础之第 部分 : 排序

R语言基础之第 部分 : 总结数据信息

R语言使用技巧

当你要对按照数据框某一列的信息对文件进行分组时

1. 可以使用split函数

2. 可以使用group_by() 函数,但是这个函数不能方便你接下来对每个小的group进行更为复杂的操作。

3. group_split() 函数

4. group_nest() 函数以及nest()函数

具体参数可参考:

https://www.jianshu.com/p/2efbf6632dc6

group_list()可以把大的数据框按照某一列切分为小的数据框,这些小的数据框再组成一个list

参考: https://mp.weixin.qq.com/s/XGb3P6SY2UlZMgun_etFmg

nest()函数可以创建嵌套数据框,将多列多行组成一个列表,而这个列表单独成为一列,称为列表列。

nest() 函数有两种使用方式。当用于分组数据框时,nest() 函数会保留用于分组的列,而将其他所有数据归并到列表列中。

还可以在未分组数据框上使用nest(),此时需要指定嵌套哪些列。

使用这些函数时,要清楚输入输出的格式是什么,怎么样取值才能得到想要的格式,是使用appply还是lapply,以及map要根据实际情况来定。