【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

相关文章

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

Python get()函数用法案例详解

《Pythonget()函数用法案例详解》在Python中,get()是字典(dict)类型的内置方法,用于安全地获取字典中指定键对应的值,它的核心作用是避免因访问不存在的键而引发KeyError错... 目录简介基本语法一、用法二、案例:安全访问未知键三、案例:配置参数默认值简介python是一种高级编

python 常见数学公式函数使用详解(最新推荐)

《python常见数学公式函数使用详解(最新推荐)》文章介绍了Python的数学计算工具,涵盖内置函数、math/cmath标准库及numpy/scipy/sympy第三方库,支持从基础算术到复杂数... 目录python 数学公式与函数大全1. 基本数学运算1.1 算术运算1.2 分数与小数2. 数学函数

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)