r - 从具有不同行数的所有文件的最后一列制作矩阵
问题描述
我有一个名为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
如果行号不同,您能否告诉我如何从每个文件的最后一列制作矩阵?我已经尝试过方法,但是当行不同时它不起作用。您的回答将不胜感激!谢谢
解决方案
符合的东西
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),])
}
推荐阅读
- docker - 为什么 VSCode 与 Docker 的本地导入不同?
- angular - 图像回退,直到在本地资产中找到有效的图像
- visual-studio - Visual Studio Shell 的替代品(隔离)
- java - 如何在不重复命令的情况下为多个修订创建 SVN 转储文件
- python - 按日期查找第一次出现的值
- php - 使用 api-platform 持久化相关资源字段
- function - 如何在雪花 UDF 中使用 over(按列名分区)
- visual-c++ - 将位图添加到 Windows 运行时剪贴板
- java - 在 Spring Boot 中生成位图
- amazon-redshift - 使用 redshift listagg 函数的语法错误