首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >隐式循环及function函数

隐式循环及function函数

作者头像
生信菜鸟团
发布2024-02-26 10:26:16
发布2024-02-26 10:26:16
50300
代码可运行
举报
文章被收录于专栏:生信菜鸟团生信菜鸟团
运行总次数:0
代码可运行

写在开头

最近在复习数据挖掘课程内容,hhh确实是兜兜转转从去年学到了今年

去年的课程笔记整理:#R语言数据挖掘

今年重新学习一遍,所以准备补充一些知识点,以及找几个GEO芯片数据实战分析一下。

隐式循环

在单细胞分析中,我们读取多个单细胞数据集时通常会用到lapply()函数,循环读取多个数据集

比如在技能树最近如何整合多个单细胞数据集推文中,就多次用到了lapply()函数

代码语言:javascript
代码运行次数:0
运行
复制
dir='GSE152938_RAW'
samples=list.files( dir )
samples 

sceList = lapply(samples,function(pro){ 
  # pro=samples[1] 
  print(pro)  
  tmp = Read10X(file.path(dir,pro )) 
  if(length(tmp)==2){
    ct = tmp[[1]] 
  }else{ct = tmp}
  sce =CreateSeuratObject(counts =  ct ,
                          project =  pro  ,
                          min.cells = 5,
                          min.features = 300 )
  return(sce)
}) 

do.call(rbind,lapply(sceList, dim))

正好复习R语言基础的时候,学到了apply()和lapply()两个函数,那一起来了解一下隐式循环吧!

apply()函数

apply()一般用于处理矩阵/数据框,返回通过将函数应用于数组或矩阵的边距而获得的向量或数组或值列表。

基本语法为:

代码语言:javascript
代码运行次数:0
运行
复制
apply(X, MARGIN, FUN, ..., simplify = TRUE)

X:要处理的数据框/矩阵名

MARGIN:对于矩阵,1表示行,2表示列,c(1,2)表示行和列。

FUN:函数,即对x的每一行/列执行FUN这个函数

simplify:表明是否应简化结果的逻辑,一般默认为 = TRUE

使用的小栗子:

代码语言:javascript
代码运行次数:0
运行
复制
#循环处理数据
test<- iris[1:6,1:4]

apply(test, 2, mean)# 对test的每一列求平均值

apply(test, 1, sum)# 对test的每一行求和

#批量画图
par(mfrow = c(2,2))

apply(iris[,1:4], 2, plot)

lapply()函数

lapply返回与X长度相同的列表,其中的每个元素都是将FUN应用于X的相应元素的结果。

lapply是apply()函数的变种,主要用于处理列表/向量(列表/向量没有行和列的概念,所以会比对矩阵/数据框的操作更简单一些),也更适用于批量读取数据或者处理统计数据

基本语法为:

代码语言:javascript
代码运行次数:0
运行
复制
lapply(X, FUN, ...)

X:向量(原子或列表)或表达式对象。其他对象(包括分类对象)将被base::as.list强制转换。

FUN:函数,即对x的每一行/列执行FUN这个函数。对于像+、%*% 这样的函数,函数名必须加上反引号或引号。

使用的小栗子:

代码语言:javascript
代码运行次数:0
运行
复制
#批量装包

pks = c("tidyr","dplyr","stringr")

qa = function(g){
  if(!require(g,character.only =T))
    install.packages(g,ask=F,update =F)
  }

lapply(pks,qa)

#批量画图
par(mfrow = c(2,2))

lapply(1:4,function(i){plot(iris[,i],col = iris[,5])})

Sapply和Vapply简介

Sapply是lapply的用户友好版本和包装器,默认情况下通过应用simplify2array()返回一个向量、矩阵,如果simplify = "array",则在适当情况下返回一个数组。sapply(x, f, simplify = FALSE, USE。NAMES = FALSE)与lapply(x, f)相同。

Vapply类似于sapply,但它有一个预先指定的返回值类型,因此使用它可能更安全(有时更快)。

写函数的函数——function()

使用apply或者lapply函数时,都有FUN参数,就是我们在执行循环时需要用的函数,这个函数可以是内置的比如mean或者sum等函数,也可以由我们自己构建

如果需要写对应需求的函数,那就需要用到function()函数——写函数的函数,因为本人的R语言基础暂时还不足以解释这个函数,所以就附上小洁老师在数据挖掘的PPT

参数

function函数

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信菜鸟团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在开头
  • 隐式循环
  • 写函数的函数——function()
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档