果子老师课程学习总结GZ07R语言批量处理 part four

前情提要:今天不咕咕咕 健身完以后来学习

part four来到function的高级应用部分

目录

目标:批量计算基因和免疫浸润的关系

​编辑

1.for循环代码

 2.Lapply

3.Sapply呢

4.do.call()

5.绘图

6.一步走


首先就是Lapply函数

目标:批量计算基因和免疫浸润的关系

载入数据:一个是样本的基因表达情况,一个是样本的免疫浸润情况

rm(list = ls())
load(file = "data/expr_immu_BRCA.Rdata")

1.for循环代码

test1 <- expr_data[1:10,1:10];test1
test2 <- immu_data[1:10,1:10];test2
### 基因和免疫浸润的相关性分析
gene <- "KLF5"
y <- as.numeric(expr_data[,gene]) #gene的表达量

### 批量操作的具体实现过程:
### 1.设定容器,最终生成的数据放在什么地方?
correlation <- data.frame()

### 2.批量把数据导出到容器
for(i in 1:length(colnames(immu_data))){
  ## 1.指示
  print(i)
  ## 2.计算
  dd = cor.test(as.numeric(immu_data[,i]),y,method="spearman")
  ## 3.填充
  correlation[i,1] = colnames(immu_data)[i]
  correlation[i,2] = dd$estimate
  correlation[i,3] = dd$p.value
}
### 修改名称
colnames(correlation) <- c("cell","cor","p.value")

结果如下

 2.Lapply

### 第1,写出单次处理的function
mycor = function(x){
  dd = cor.test(as.numeric(immu_data[, x]),y,method ="spearman",exact=FALSE)
  data.frame(cell=x,cor=dd$estimate,p.value=dd$p.value)
}
### 测试函数功能
mycor("Activated B cell")

### 第2步lapply批量作用于函数,返回list
lapplylist = lapply(colnames(immu_data),mycor)
sapplylist = sapply(colnames(immu_data),mycor)
str(lapplylist)
str(sapplylist)
sapplylist[,1]

 ### 第3步do.call 转换list
cor_data <- do.call(rbind,lapplylist)

lapplylist:

 cor_data:

3.Sapply呢

在上一步的环节中有一个sapplylist,其实是在利用sapply的返回格式

sapplylist:

 两个list的形式不同:

 sapply整合了28*3个list,并且看起来就很像数据框,于是变换一下

sapplylist <- as.data.frame(sapplylist)

 变换成功,但并不是我们画图喜欢的格式,没有关系,转换一下就好了

sapplylist <- t(sapplylist)

4.do.call()

将list按照一定的顺序去合并,第一个参数是函数,如rbind或者cbind;第二个参数是内容

lapply常常要和do.call连用!!!!!

5.绘图

6.一步走

cor_data <- do.call(rbind,lapply(colnames(immu_data),function(x){
  dd = cor.test(as.numeric(immu_data[,x]),y,method ="spearman",exact=FALSE)
  data.frame(cell=x,cor=dd$estimate,p.value=dd$p.value)
}))

测试数据请发邮件yunbk@mail2.sysu.edu.cn获取

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

18kkk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值