我是R的新手,我有1200个基因表达文件,只有两列基因名称和基因表达值。我希望过滤出63个这些基因,并生成一个仅包含这些基因的基因表达值的基因文件,这样最终就可以在单个数据库中为每个1200个样本生成63个值
我有一个索引文件,里面有我想要提取的基因的I和行号:
row . Gene . Id
132 . ESM1 . ENSG00000164283
689 . RASS . ENSG00000066697
... .... ...............
... .... ...............以此类推,降至63。基因表达式文件只有两列,包含基因Id和基因表达值,共63000行,如下所示:
ENSG00000164283 . 3234.345
ENSG00000066697 . 255.346
ENSG00000046895 . 4587.322
............... ........
............... ........诸若此类。我可以通过使用索引文件子化基因表达式文件,将这些行提取到一个新的变量中
index.table<-read.table("path to file")
index<-index.table[,1]
sample.1<-read.table("path to file")
S1<-sample.1[index,2]
sample.2<-read.table("path to file")
S2<-sample.2[index,2]
sample.3<-read.table("path to file")
S3<-sample.3[index,2]将为我提供所需的子集,然后可以将所有样本的所有基因表达值的列绑定到单个文件中
gene.DB<-cbind(S1,S2,S3,S4.....S1200) 然而,这对于1200个单独的文件来说是非常不切实际的,我如何循环这个函数来在这个给定目录中的所有文件上运行?我很抱歉,如果这是一个非常基本的问题,但我只是可以似乎知道如何做,任何帮助将非常感谢。提前谢谢你。
安德烈斯
发布于 2019-10-24 09:28:15
考虑基数R的sapply在构建命名文件列表之后构建基因表达值矩阵(假设所有1,200个文件都驻留在同一目录中):
index_table <- read.table("path to file")
index <- index_table[,1]
gene_files <- list.files("path to all gene file")
names(gene_files) <- paste0("S", seq_along(gene_files))
samples <- sapply(gene_files, function(f) read.table(f)[index,2])https://stackoverflow.com/questions/58532302
复制相似问题