批量从文件合并表格
2019-12-29 本文已影响0人
BeeBee生信
以及如何创建空tibble
做生信的经常需要批量合并表格,或者按行或者按列。比如下载了TCGA的数据,里面每个样本是一个文件,第一步我们可能需要先把所以的合并到一个矩阵里。
假设把所有文件都放在一个目录里,首先取得文件列表,用 list.files
函数。
fileList <- list.files(main_dir, pattern = "seg$", full.names = TRUE)
设置 full.names = TRUE
可以获得每个文件路径,不需要手动拼接。第二部写 for 循环读取每个文件,并且使用 bind_rows/cols
进行合并。此时需要一个空表格,然后把所有读取的表格合并到这里。创建空表格方法是。
> empty_tibble <- tibble(var1 = character(), var2 = double(), var3 = logical())
> empty_tibble
# A tibble: 0 x 3
# ... with 3 variables: var1 <chr>, var2 <dbl>, var3 <lgl>
如果懒得创建空表格,可以选择将读取的表格放在一个列表(list)里,然后对列表使用 bind_rows/cols
。示例如下:
fileList <- list.files(main_dir, pattern = "seg$", full.names = TRUE)
segList <- list()
segNum <- length(fileList)
# 循环读取文件,并放到列表 segList
for(i in 1:segNum){
fileI <- fileList[i]
segI <- readr::read_tsv(fileI, col_types = cols()) %>% dplyr::mutate(`Chromosome` = as.character(`Chromosome`))
segList[[i]] <- segI
}
# 批量合并
segAll <- dplyr::bind_rows(segList)