【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

相关文章

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

4B参数秒杀GPT-3.5:MiniCPM 3.0惊艳登场!

​ 面壁智能 在 AI 的世界里,总有那么几个时刻让人惊叹不已。面壁智能推出的 MiniCPM 3.0,这个仅有4B参数的"小钢炮",正在以惊人的实力挑战着 GPT-3.5 这个曾经的AI巨人。 MiniCPM 3.0 MiniCPM 3.0 MiniCPM 3.0 目前的主要功能有: 长上下文功能:原生支持 32k 上下文长度,性能完美。我们引入了

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时