【发布时间】:2016-12-14 14:57:37
【问题描述】:
我正在使用 R 来 cbind 大约 11000 个文件,使用:
dat <- do.call('bind_cols',lapply(lfiles,read.delim))
这是令人难以置信的缓慢。我使用 R 是因为我的下游处理(如创建绘图等)在 R 中。按列连接数千个文件有哪些快速替代方法?
我想要完成这三种类型的文件。它们看起来像这样:
[centos@ip data]$ head C021_0011_001786_tumor_RNASeq.abundance.tsv
target_id length eff_length est_counts tpm
ENST00000619216.1 68 26.6432 10.9074 5.69241
ENST00000473358.1 712 525.473 0 0
ENST00000469289.1 535 348.721 0 0
ENST00000607096.1 138 15.8599 0 0
ENST00000417324.1 1187 1000.44 0.0673096 0.000935515
ENST00000461467.1 590 403.565 3.22654 0.11117
ENST00000335137.3 918 731.448 0 0
ENST00000466430.5 2748 2561.44 162.535 0.882322
ENST00000495576.1 1319 1132.44 0 0
[centos@ip data]$ head C021_0011_001786_tumor_RNASeq.rsem.genes.norm_counts.hugo.tab
gene_id C021_0011_001786_tumor_RNASeq
TSPAN6 1979.7185
TNMD 1.321
DPM1 1878.8831
SCYL3 452.0372
C1orf112 203.6125
FGR 494.049
CFH 509.8964
FUCA2 1821.6096
GCLC 1557.4431
[centos@ip data]$ head CPBT_0009_1_tumor_RNASeq.rsem.genes.norm_counts.tab
gene_id CPBT_0009_1_tumor_RNASeq
ENSG00000000003.14 2005.0934
ENSG00000000005.5 5.0934
ENSG00000000419.12 1100.1698
ENSG00000000457.13 2376.9100
ENSG00000000460.16 1536.5025
ENSG00000000938.12 443.1239
ENSG00000000971.15 1186.5365
ENSG00000001036.13 1091.6808
ENSG00000001084.10 1602.7165
谢谢!
【问题讨论】:
-
尝试分析您的代码。我敢打赌
read.delim是你的瓶颈。请改用data.table::fread。还有谷歌关于将数据集快速读取到 R -
尝试使用
fread从data.table即lapply(lfiles, fread)阅读,而不是有很多列,最好rbind使用分组变量,即rbindlist(lapply(lfiles, fread), idcol=TRUE)(尽管帖子包含很少的信息来提供任何类型的解决方案) -
您是在寻找
cbind还是rbind?rbindlistfromdata.table非常快 -
@Chris 正在尝试列绑定 -
cbind.