r - 按列快速串联数千个文件

标签 r cbind

我正在使用 R 来绑定(bind)大约 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

谢谢!

最佳答案

为了快速读取文件,我们可以使用 data.table 中的 fread ,然后使用 rbind list使用 rbindlist 指定 idcol=TRUEdata.table 来提供分组变量来标识每个数据集

library(data.table)
DT <- rbindlist(lapply(lfiles, fread), idcol=TRUE)

关于r - 按列快速串联数千个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38835892/

相关文章:

r - model.frame.default(object, data, xlev = xlev) 错误 : object is not a matrix

r - 将不同长度的列表组合成数据帧

r - cbind警告:从短变量中找到了行名,并且已将其丢弃

r - ggplot : Adding Regression Line Equation and R2 with Facet

r - 如何在 Linux 上从 R 访问 Olap-Cubes

r - 在 Stan/Rstan 中实现指数一般线性模型

r - Purrr:哪个嵌套数据框遇到了错误?

r - 嵌套列表到单个表(按列名称合并?)

R:通过键变量绑定(bind)列