【R语言】【3】apply,tapply,lapply,sapply,mapply与par函数相关参数

2023-10-16 05:59

本文主要是介绍【R语言】【3】apply,tapply,lapply,sapply,mapply与par函数相关参数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

R语言绘图虽然看着简洁,但是函数参数实在是太多了——虽然学了4天,但是像是学了一周,其实我目前目的是画好看的图,那么如果有绘图模板就好了。由于买的书中的函数调用太多简洁,df$SOD等变量数据不知从何而来,所以要自己积累模板了。

这里存在一些问题,虽然学了知识就算忘了也有印象,但是忘的太多又要重学!比如几个月或是几年才捡起来,用几次的matlab,每次都要重敲一两天的语法代码和绘图代码,才能找到感觉……


目录

    • 前言
    • apply
      • tapply 分组计算
      • lapply 多元素按行分组计算
      • sapply 简化版lapply
      • mapply 多data计算
    • par
      • bty 图的围边
      • fg/bg 前景/背景
      • las 坐标轴横竖数字
      • lty 线的类型

\;\\\;\\\;

apply

m <- array(c(1:10),dim=c(2,5)# byrow=TRUE #按行填充 array没有这个参数
)
m
a=apply(m,1,sum)   #按行求和
a
a=apply(m,2,sum)   #按列求和
a
> m[,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10
> a
[1] 25 30
> a
[1]  3  7 11 15 19
a <- array(c(1:8),dim=c(2,2,2)
)
a
res=apply(a,1,sum)    #第1层2x2,第2层2x2
res
res=apply(a,2,sum)    #第1片2x2,第2片2x2
res
res=apply(a,c(1,2),sum)   #6根1x2
res
> a
, , 1[,1] [,2]
[1,]    1    3
[2,]    2    4, , 2[,1] [,2]
[1,]    5    7
[2,]    6    8
> res
[1] 16 20
> res
[1] 14 22
> res[,1] [,2]
[1,]    6   10
[2,]    8   12

\;\\\;\\\;

tapply 分组计算

v <- c(1:5)
v
group <- c(rep('a',3),rep('b',2))
group#a b
#6 9
tapply(v,group,sum)  #按group分组,将对应的v中的元素加起来mat <- matrix(c(1:10),nrow=2)
mat
group <- matrix(c(rep(1,5),rep(2,5)),nrow=2)
group# 1  2
#15 40
# tapply(mat,group,sum)  #按group分组,将对应的mat中的元素加起来#1 2
#3 8
tapply(mat,group,mean) #按group分组,将对应的mat中的元素加一起求均值

\;\\\;\\\;

lapply 多元素按行分组计算

需要转成data.frame

l <- list(a=c(1:5),b=c(6:10)
)
#返回一个list
res <- lapply(l,mean )   # 3 8
#转成data.frame
res <- as.data.frame(res)
res
> resa b
1 3 8
rownames <- paste('a',LETTERS,sep='#')
rownames#去掉前缀a#
names <- unlist(lapply(strsplit(rownames,'#'),function(x) x[2]   #取第二个元素
))
names
> rownames[1] "a#A" "a#B" "a#C" "a#D" "a#E" "a#F" "a#G" "a#H" "a#I"
[10] "a#J" "a#K" "a#L" "a#M" "a#N" "a#O" "a#P" "a#Q" "a#R"
[19] "a#S" "a#T" "a#U" "a#V" "a#W" "a#X" "a#Y" "a#Z"
> names[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N"
[15] "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"

\;\\\;\\\;

sapply 简化版lapply

l <- list(a=c(1:5),b=c(6:10)
)
sapply(l,mean,simplify=T) #T表示不用unlist了
a b 
3 8 

\;\\\;\\\;

mapply 多data计算

#可以传入多个data
mapply(sum,list(a=1,b=2,c=3),list(a=10,b=20,d=30)
)mapply(sum,list(a=1,b=2,c=3),list(a=10,b=20,c=30),list(a=15,b=25,d=35)
)mapply(function(x,y) x%%y,c(1:50),c(1:10)
)

\;\\\;\\\;

par

bty 图的围边

par(mfrow=c(3,2))
bty <- c('o','l','7','c',']','u')    #bty是图的围边
for(i in 1:6){par(bty=bty[i])plot(1:5,main=paste('bty=',bty[i],sep=':'))
}

在这里插入图片描述

\;\\\;\\\;

fg/bg 前景/背景

前景就是图的围边

par(fg='red',          #前景(边框)bg='white'         #背景
)
par(mfrow=c(1,1),font=3,          #1普通,2粗体,3斜体,4粗斜体family='serif')  #字体serif就是Times New Roman#气泡图
plot(1:5,main="Times New Roman",cex=1:5,        #cex是点的大小col=1:5         #col是颜色
)

在这里插入图片描述

\;\\\;\\\;

las 坐标轴横竖数字

#las表示坐标轴数字的横竖
par(mfrow=c(2,2))
for( i in 0:3){par(las=i)plot(1:5,main=paste('las=',i))
}

在这里插入图片描述

\;\\\;\\\;

lty 线的类型

par(mfrow=c(2,3))
for( i in 1:6){par(lty=i,lwd=i/2)   #lwd默认是1,线段粗细plot(1:5,type='l',main=paste('lty=',i),sub='subtitle')
}

在这里插入图片描述

\;\\\;\\\;

这篇关于【R语言】【3】apply,tapply,lapply,sapply,mapply与par函数相关参数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/219536

相关文章

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

MySQL count()聚合函数详解

《MySQLcount()聚合函数详解》MySQL中的COUNT()函数,它是SQL中最常用的聚合函数之一,用于计算表中符合特定条件的行数,本文给大家介绍MySQLcount()聚合函数,感兴趣的朋... 目录核心功能语法形式重要特性与行为如何选择使用哪种形式?总结深入剖析一下 mysql 中的 COUNT

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN