如何在for循环R中连接表

时间:2017-09-15 14:43:54

标签: r

我正在处理不同情况(样本)的表格(txt格式),所有表格如下所示:

Sample  Chromosome  Start     End   Num_probes  Segment_Mean
1             1     3301765 8024757 3057         0.3208
1             1     8029121 8164570 66           0.8332
1             1     8164896 8630844 220          0.3059
1             1     8658852 8890987 157          0.5415

我想一起处理所有这些,为此我正在使用以下代码

fileList <- list.files( ,pattern=".txt")
for (i in fileList){
  #print(i)
  tbl <- read.table(i, sep="\t", as.is=TRUE, header=TRUE)
  tbl$Sample <- i
  tbl1 <-tbl[tbl$Chromosome == 1, ]
  #print(tbl1)
  write.table(tbl1, paste("chr1_", i, sep="") , sep="\t", col.names=T, row.names = F, quote=F)

}

我想将所有表连接在一起,如下所示:

Sample  Chromosome  Start     End   Num_probes  Segment_Mean
    1             1     3301765 8024757 3057         0.3208
    1             1     8029121 8164570 66           0.8332
    1             1     8164896 8630844 220          0.3059
    1             1     8658852 8890987 157          0.5415
    2             1    .....
    2             1    ..... 
    3             1    ....

我尝试在循环中使用Reduce(function(...) merge(..., all = TRUE),list(tbl1)),但它没有woork,我也尝试new_tbl = do.call(cbind, tbl1)但它只需要最后一个df ...任何想法请求?< / p>

谢谢!

1 个答案:

答案 0 :(得分:3)

将表保存在列表中时,可以使用filenames <- list.files(your_location, pattern = "*.txt") tbl <- lapply(filenames, function(x){ read.table(x, sep="\t", as.is=TRUE, header=TRUE)} new_tbl <- do.call(rbind, tbl) new_tbl <- new_tbl[new_tbl$Chromosome == 1, ]

configChanges