首页 > 解决方案 > 从具有不同行数的所有文件的最后一列制作矩阵

问题描述

我有一个名为gene.tsv 的文件,并且有100 个文件夹——每个文件夹都包含这些文件。文件格式为:

`Gene ID`          `Gene Name` Reference Strand  Start     End Coverage   FPKM   TPM
  <chr>              <chr>       <chr>     <chr>   <dbl>   <dbl>    <dbl>  <dbl> <dbl>
1 ENSG00000187961.13 KLHL17      chr1      +      960587  965715     4.71  2.22   5.03
2 ENSG00000187583.10 PLEKHN1     chr1      +      966497  975865     3.67  2.60   5.89
3 ENSG00000187642.9  PERM1       chr1      -      975204  982093     1.09  0.445  1.01
4 ENSG00000187634.11 SAMD11      chr1      +      923928  944581     6.73  5.57  12.6 
5 ENSG00000188976.10 NOC2L       chr1      -      944204  959290    67.4  26.9   61.0 
6 ENSG00000188290.10 HES4        chr1      -      998962 1000172    27.2  13.1   29.6 

最后一列包含 TPM 值,我想从位于不同文件夹中的所有样本(即所有不同的gene.tsv 文件)的最后一列创建一个矩阵(以样本名称命名)

问题是每个基因 .tsv 文件包含不同的行数 例如,第一个 gene.tsv 包含 19645 行,第二个包含 19688 行

输出应如下所示:每个样本的每个基因的 TPM 值。

             Sample1      Sample2    Sample3    Sample4     Sample5    Samle6         
A1BG      211.653339     91.35832   118.5056   227.7529    60.53333   122.0699        
A1CF        0.000000      0.00000     0.0000     0.0000     0.00000     0.0000         
A2M     21748.389142 103099.68587 18077.6432 91905.5829 71344.22858 34262.9726  
A2ML1     432.546595   3552.04679     0.0000     0.0000    13.67998  2055.6870        
A3GALT2     1.413336      0.00000     0.0000     0.0000     0.00000     0.0000         
A4GALT    731.331278    691.09973   922.3733  1083.1338   631.42933   488.1566 

如果行号不同,您能否告诉我如何从每个文件的最后一列制作矩阵?我已经尝试过方法,但是当行不同时它不起作用。您的回答将不胜感激!谢谢

标签: rmatrixtpm

解决方案


符合的东西

library(foreach)
DATAf=NULL
foreach(files=c("file1.tsv","file2.tsv",...)) %do% {
DATA=read.table(file = files, sep = '\t', header = TRUE)
DATAf=rbind(DATAf,DATA[nrow(DATA),])
}

推荐阅读