博客
关于我
R语言中的apply(),lapply(),sapply(),tapply()函数以及示例
阅读量:624 次
发布时间:2019-03-13

本文共 1405 字,大约阅读时间需要 4 分钟。

R语言中的apply函数及其应用

在R语言中,apply函数是一种强大的工具,能够有效地替代传统的循环结构,进行数据处理和统计分析。本文将探讨apply及其衍生函数(如lapply、sapply、tapply)的功能、用途及其示例。

apply函数

apply函数用于将给定的函数应用到矩阵或数据框的列或行上,返回结果为向量。常见用途包括对矩阵进行列和行计算,避免使用循环结构。

示例:计算矩阵列和

m1 <- matrix(c(-1:10), nrow=5, ncol=6)m1a <- apply(m1, 2, sum)

示例:应用自定义函数

cave <- function(x, c1, c2) {    c(mean(x[c1]), mean(x[c2]))}ma <- matrix(c(1:4, 1, 6:8), nrow=2)ma2 <- apply(ma, 1, cave, c1="x1", c2=c("x1", "x2"))

lapply函数

lapply用于对列表执行函数操作,返回结果为列表,适合处理多个元素的列表数据。

示例:处理电影标题

movies <- c("SPYDERMAN","BATMAN","VERTIGO","CHINATOWN")movies_lower <- lapply(movies, tolower)

示例:转换为向量

films_lower <- unlist(lapply(movies, tolower))

sapply函数

sapply类似于lapply,但返回结果为向量,适用于需要转换为向量的场景。

示例:计算最小值

dt <- carslmn_carslmn_cars <- lapply(dt, min)smn_cars <- sapply(dt, min)smn_cars_unlist <- unlist(lmn_cars)

tapply函数

tapply用于对数据框应用度量函数,如求均值、中位数等,适合数据框处理。

示例:计算中位数

data(iris)tapply(iris$Sepal.Width, iris$Species, median)

apply结合dimnames的使用

names(dimnames(x)) <- c("row", "col")x3 <- array(x, dim = c(8, 2, 3), dimnames = c(dimnames(x), list(C = paste0("cop.", 1:3)))

自定义函数与apply结合

cave <- function(x, c1, c2) {    c(mean(x[c1]), mean(x[c2]))}ma <- matrix(c(1:4, 1, 6:8), nrow=2)ma2 <- apply(ma, 1, cave, c1="x1", c2=c("x1", "x2"))stopifnot(apply(ma, 2, is.vector))

结论

通过以上案例可以看出,R语言的apply函数及其衍生工具在数据处理和分析中具备强大的灵活性和便利性。选择合适的函数(如apply、lapply、sapply或tapply)能够显著提升工作效率,减少代码复杂度。在实际应用中,合理搭配函数属性和自定义函数,是提高R代码性能和代码质量的关键。

转载地址:http://vfjaz.baihongyu.com/

你可能感兴趣的文章
tableviewcell 中使用autolayout自适应高度
查看>>
Symbolic Aggregate approXimation(SAX,符号聚合近似)介绍-ChatGPT4o作答
查看>>
Orcale表被锁
查看>>
svn访问报错500
查看>>
sum(a.YYSR) over (partition by a.hy_dm) 不需要像group by那样需要分组函数。方便。
查看>>
ORCHARD 是什么?
查看>>
Struts2中使用Session的两种方法
查看>>
order by rand()
查看>>
Orderer节点启动报错解决方案:Not bootstrapping because of 3 existing channels
查看>>
org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement profile
查看>>
org.apache.commons.beanutils.BasicDynaBean cannot be cast to ...
查看>>
org.apache.dubbo.common.serialize.SerializationException: com.alibaba.fastjson2.JSONException: not s
查看>>
sqlserver学习笔记(三)—— 为数据库添加新的用户
查看>>
org.apache.ibatis.exceptions.PersistenceException:
查看>>
org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned
查看>>
org.apache.ibatis.type.TypeException: Could not resolve type alias 'xxxx'异常
查看>>
org.apache.poi.hssf.util.Region
查看>>
org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit(I)Lorg/apache/xmlbeans/XmlOptions;
查看>>
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /
查看>>
org.hibernate.HibernateException: Unable to get the default Bean Validation factory
查看>>