专栏首页生信小驿站快读读取并合并多个基因表达文件

快读读取并合并多个基因表达文件

经常会遇到下载的基因表达数据,是分散在多个数据文件中,而我们为了得到基因表达矩阵,则必须要做的一步就是通过R语言合并这些表达文件。所以这里我们做一下几种不同的方法的对比:

例如这样的多个数据文件:

而单个文件的形式如下所示:

(1)通过sapply函数

setwd('D:\\SCIwork\\F14\\mRNA\\E-MEXP-1270\\E-GEOD-59363.processed.1')
files = list.files()
read_in <-function(x){
  temp = read.table(x,header = T)
  temp = temp[,-1]
  return(temp)
}
system.time(data <- sapply(files,read_in))
dim(data)

(2)通过R循环加merge函数

time1 = Sys.time()
for(i in 1:length(files)){
   if(i == 1) {
    temp = read.table(files[i],header = T)
    name <- substr(files[i], start = 1, stop = 12)
    names(temp)[2] <- name
  } else {
    dt <- read.table(files[i],header = T)
    name <- substr(files[i], start = 1, stop = 12)
    names(dt)[2] <- name
    temp = merge(temp, dt, by='ID_REF')  }}

time2 = Sys.time()
time2 - time1

(3)通过R循环加cbind函数

time_1 = Sys.time()
input_mat = 1
for(i in 1:length(files)){
  temp = read.csv(files[i],header = T)
  temp = temp[,-1]
  input_mat = cbind(input_mat,temp)
}
input_mat = input_mat[,-1]
time_2 = Sys.time()
time = time_1 - time_2
print(time)

通过上述的步骤,我们得到如下的表达矩阵。

(4)总结。 我们发现sapply函数读取的速度最快,循环加merge函数读取的速度最慢,但是循环加merge函数更容易理解,且更适合单个数据文件出现行名不相同时。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • R 数据质量分析①

    数据质量分析是数据挖掘中数据准备的最重要一环,是数据处理的前体。数据质量分分析主要任务是识别脏数据。常见的脏数据包括:

    用户1359560
  • 科研绘图系列:(4)使用PPT绘制蛋白质序列

    第二步:右键选择填充颜色,设置为清灰色;插入新的矩形,选择不带弧度角的矩形;设置颜色为#E64B35。

    用户1359560
  • (免费课程转载)3小时课程带你重复一篇3分生信SCI(中)

    大家好,欢迎再次来到MedGo干货课堂,在上期3小时课程带你重复一篇3分生信SCI(上)中,我们着重为大家讲解了GEO芯片的meta分析。很多同学和老师课后向我...

    用户1359560
  • R批量读取、处理及写出文件

    在对同一路径下多个文件做相同处理时,可以循环读取文件夹中的文件,批量读取,处理和写入文件,会大大提高工作效率,在R语言中,处理方法如下所示。

    生信编程日常
  • 迷宫问题(bfs)

    迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9112 ...

    用户4492257
  • phpexcel踩坑记

    最近在使用phpexcel扩展处理表格导入的时候,遇到两个坑,现做以下记录 坑一:excel表中的富文本导入后数据始终不对 解决方法:假设$temp为循环读...

    lestat
  • 【自考】大学本科那个数据结构怎么学,期末不挂科指南,第1篇

    当然,你现在没上大学或者不是计算机专业,那你现在应该知道了,他们有个必修课叫《数据结构导论》

    梦想橡皮擦
  • 帮同学的忙,随意写了个课程设计(关于循环双向列表)

    1 /* 双向循环链表c++版 */ 2 /* Gxjun coder */ 3 #include<iostream> 4 ...

    Gxjun
  • python开发_tempfile

     如果你的应用程序需要一个临时文件来存储数据,但不需要同其他程序共享,那么tempfile模块来创建临时文件(夹)是个不错的选择

    Hongten
  • 《Linux命令行与shell脚本编程大全》第十八章 图形化桌面环境中的脚本编程

    18.1 创建文本菜单 直接上例子吧:   1 #!/bin/bash   2 function menu   3 {   4         clea...

    xcywt

扫码关注云+社区

领取腾讯云代金券