前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快读读取并合并多个基因表达文件

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

作者头像
用户1359560
发布2020-04-22 17:17:11
2.2K0
发布2020-04-22 17:17:11
举报

经常会遇到下载的基因表达数据,是分散在多个数据文件中,而我们为了得到基因表达矩阵,则必须要做的一步就是通过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函数更容易理解,且更适合单个数据文件出现行名不相同时。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档