Сделать матрицу из последнего столбца всех файлов с разным количеством строк - PullRequest
0 голосов
/ 07 октября 2019

У меня есть файл с именем gene.tsv и есть сотни папок, каждая из которых содержит эти файлы. Формат файла:

`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 файл содержит разное количество строк. Например, 1-й gene.tsv содержит 19645 строк, 2-й содержит 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 

Не могли бы вы дать мне знать, как сделать матрицу из последнего столбца из каждого файла, если номер строки отличается? Я пробовал способы, но это не работает, когда строки разные. Ваш ответ будет высоко оценен! Спасибо

1 Ответ

0 голосов
/ 07 октября 2019

Что-то в линии

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),])
}
...