批量计算微生物alpha多样性

  • 批量生成多个矩阵
  • 批量导入数据
  • 定义计算微生物alpha多样指标的函数
  • 批量导出excel

   为什么要写这个函数?因为微生物群落的数据测序完后,通常都是以otu或者asv等分类单元的丰度数据,抽平后的长度一般也在几万行。当你的数据量较大,需要多次读入+导出,并且还需要计算微生物α多样性指标,可使用这个函数来完成。为了减少重复代码及减轻工作量。这里主要涉及内容: 批量导入数据+ 定义计算微生物α多样性主要指标的函数+ 批量导出。这里使用构建的虚拟数据完成以下过程。

批量生成多个矩阵

定义函数随机生成N个矩阵(n行,n列)

# 这里定义函数生成随机矩阵,来模拟otu数据
random_matrix <- function(seed, n, nrow, ncol) { #主要的函数体set.seed(seed) #只要涉及随机数都需要设定种子df = list() #生成一个空的df为list()结构otu = paste0("otu_", 1:ncol) #设置OTU idsample = paste0("sample_", 1:nrow) #设置samples idfor (i in 1:n) { #第一次循环,是为了生成矩阵df[[i]] = matrix(NA,nrow,ncol) #循环生成N个矩阵并装进df这个list()中df[[i]] = data.frame(df[[i]]) #将list转成数据框结构,以便添加行名和列名colnames(df[[i]]) = otu #对df所有数据框赋值列名rownames(df[[i]]) = sample #赋值行名for (j in seq_along(df[[i]])) { #嵌套循环df[[i]][j] = sample(0:300,nrow,replace = T) #前面生成的矩阵是NA空值,这里循环生成N行、N列0~300的随机数} #list()中 df[[]][] 前面的双括号表示读取到哪个矩阵,后面单括号表示读取该矩阵的哪一列}return(df) #返回给df
}#生成6个矩阵,每个矩阵10行,200列
data <- random_matrix(seed = 1, n = 6, nrow = 10, ncol= 200) # n nrow ncol 可以根据自己的喜好,随便设定

这是生成出来总的data(list结构),并显示第一个数据集中的数据情况:

批量导入数据

我们将刚刚生成的数据直接以不同sheet的形式一次性导出至一个excel中

write.xlsx(data, "mydata.xlsx", append=T, rowNames=T) # 记得选择append=T,这可以多个sheet生成到一个excel中。


批量导入同excel中的多个sheet

library(tidyverse)
sheet.index <- c(1:6) #1至6个sheet 6可以才成n 这里根据自己的excel中的情况修改
re <- map(sheet.index, ~ read.xlsx("mydata.xlsx", sheet=. )) #一次性导入excel中1到6个sheet
str(re) #可以查看到导入的数据集是list结构,其中包含6个data.frame,也就是6个sheet



记得将第一列sample样本赋值到rowname并删除

定义计算微生物alpha多样指标的函数

alpha_diversity <- function(x){library(vegan) #由于α多样性有些指标需要基于vegan包 这里加载R包x = data.matrix(x) #转换矩阵shannon = diversity(x,index="shannon") #香浓指标richness = specnumber(x) #丰富度simpson = diversity(x, index = "simpson") #辛普森指数Chao1 = estimateR(x)[2,] #Chao1指数eveness = shannon / log(richness) #均匀度a = data.frame(shannon, richness,simpson,Chao1,eveness) #用数据框打包计算的结果return(a)
}
#构建一个list来装对应不同sheet中计算alpha多样性的结果
b <- list()
#循环计算sheet的过程
for(i in seq_along(re)){b[[i]] <- alpha_diversity(re[[i]]) #循环计算re这个list()中每个数据框并装到b列表中
}
#查看结果
head(b)

批量导出excel

for(i in 1:6){sample <- paste0("sample_", 1:nrow(re[[i]])) #这里生成对应数据集中行行数的样本名rownames(b[[i]]) <- sample #并赋值给b数据集中每个data.frame作为行名write.xlsx(b, file = "C:/Users/Zz/Desktop/a.xlsx", append=T, rowNames=T) #输出所有计算结果并导出至一个excel中
}

自定义函数 | 批量计算微生物群落的alpha多样性相关推荐

  1. 数据库快照,自定义函数与计算列

     数据库快照,自定义函数与计算列 1.数据库快照 数据库快照就是保存某个数据库在快照那一瞬间的状态.快照和备份原理上有所不同,但是功能有一点相同那就是可以将数据还原为备份的那个时刻.快照的原理是新建一 ...

  2. php自定义函数数学计算,ThinkPHP自定义函数解决模板标签加减运算的方法

    本文实例讲述了ThinkPHP自定义函数解决模板标签加减运算的方法.分享给大家供大家参考.具体如下: 实际项目中,我们经常需要标签变量加减运算的操作.但是,在ThinkPHP中,并不支持模板变量直接运 ...

  3. python自定义函数实例计算1-n的偶偶数和_Python入门--11--自定义函数

    使用def定义自定义函数 举个栗子: def myfristFunction(): print "we are 伐木累!" #输入myfristFunction() 会输出:we ...

  4. 致远OA表单自定义函数(计算N年后今天的日期 )

    需求背景 看到这个标题,可能好些人懵了,N年后的今天这么简单,还需要计算么? 的确,人脑算很简单,但是咱们的表单中-- 前日,有人跟大表哥来电,就说客户要根据档案的归档日期和保存年限,自动计算出档案的 ...

  5. 在mysql中创建一个自定义函数来计算两个数的和_Mysql创建自定义函数

    Mysql创建用户自定义函数: >显示库中所有的自定义函数信息: show function status; >创建自定义函数的过程如下demo1: drop function if ex ...

  6. python自定义函数实例计算1-n的偶偶数和_python用户输入一个整数N,计算并输出1到N相加的和,请问这个程序错在哪里了?...

    展开全部 第一个错误的地方是for i in str(n),input()输入的是636f707962616964757a686964616f31333431356661整型,循环增加应该用for i ...

  7. php自定义函数数学计算,PHP基于自定义函数生成笛卡尔积的方法示例

    本文实例讲述了PHP基于自定义函数生成笛卡尔积的方法.分享给大家供大家参考,具体如下: $color = array('red', 'green'); $size = array(39, 40, 41 ...

  8. SQLServer 自定义函数 日期计算月初/月末/年初/年末/季初/季末

    SQLServer 2005,SQLServer 2008,SQLServer 2014,SQLServer 2017 均可使用 alter function dbo.date_calc (@date ...

  9. 惯性积计算实例_第2课:自定义函数|计算思维在于必要的复用?!

    计算思维的思考 自定义函数在计算思维 角度怎么理解? 其实就是必要!不得不!? 即使目的是为了模块化设计, 可以让主程序更简洁, 但也要强调复用, 即可以重复调用, 只改改参数, 就可以方便使用, 这 ...

最新文章

  1. 根据 sitemap 的规则[0],当前页面 [pages/index/index] 将被索引
  2. 每日一皮:程序员的神逻辑...
  3. 抛开flash,自己开发实现C++ RTMP直播流播放器
  4. Linux脚本 输入90为优秀
  5. Red Hat Enterprise Linux Server release 5.6 安装 MongoDB 2.6.4
  6. 网页上有错误(类不能支持 Automation 操作)解决方法
  7. SQL Server安全(11/11):审核(Auditing)
  8. linux-01-概述
  9. 时态知识图谱补全的方法及其进展
  10. c++循环执行一个函数_Python—程序的循环结构
  11. Spring学习总结(20)——Spring加载多个项目properties配置文件问题解决
  12. java面试第十七天
  13. python中popitem_什么是python popitem函数?示例解析
  14. Sina微博模拟登录获取Cookies
  15. Unity联网插件(PUN)
  16. Android8.1 APK安装过程源码解析
  17. 【网络驱动】GMAC 系统框架
  18. 关于推特社交机器人数据集(来自上一篇论文)
  19. Jini 能给您带来什么
  20. dede采集插件自动采集文章图片自定义接口

热门文章

  1. Lint-staged自动修复格式错误及小结
  2. Paypal国际版网站集成简易教程
  3. Windows商店安装问题已解决 Xbox应用将改善游戏安装
  4. 反锯齿渲染技术--SMAA
  5. 全民一起玩python提高篇,全民一起玩Python 基础篇+提高篇+笔记2019年
  6. The ALTER TABLE statement conflicted with the FOREIGN KEY constraint FK_SortId.
  7. 微信小程序常见问题记录
  8. Mac运行exe的几种方法,欢迎补充!
  9. c语言:输入三角形的三边,判断是否是直角三角形
  10. mybaties学习笔记