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

Python011

《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

参考资料:

-Usage

aggregate(x, by, FUN, ..., simplify = TRUE, drop = TRUE)

与tapply类似,但是x可以为data.frame或矩阵;

-Arguments

by

a list of grouping elements, each as long as the variables in the data frame x. The

elements are coerced to factors before use.

-Example

-Usage

by(data, INDICES, FUN, ..., simplify = TRUE)

-Example

将warpbreaks的一二列,根据tension这一列的(L、M、H)运行summary

aggregate与by的区别 :aggregate是对x的每一列分别根据因子进行分组计算,而by是根据因子将data整个分成几个小的data.frame,然后进行运算;