【问题标题】:how to apply the same transformation to all files in a folder如何对文件夹中的所有文件应用相同的转换
【发布时间】:2020-02-20 06:12:28
【问题描述】:

我是 RI 的新手,有 1200 个基因表达文件,只有两列基因名称和基因表达值但是每个 1200 个样本的这些值 63 个值都在一个数据库中

我有一个索引文件,其中包含我想要提取的基因的 ID 和行号:

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 个单独的文件来说是非常不切实际的,我如何循环这个函数以在这个给定目录中的所有文件上运行?如果这是一个非常基本的问题,我深表歉意,但我似乎知道该怎么做,任何帮助将不胜感激。提前谢谢你。

安德烈斯

【问题讨论】:

  • 类似l &lt;- list.files('my_folder/'); purrr::map_dfc(l, ~read.table(.)[index, 2])

标签: r


【解决方案1】:

在构建命名文件列表后,考虑使用 base 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])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    相关资源
    最近更新 更多