实例数据、字符R处理

批量从文件合并表格

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)
上一篇下一篇

猜你喜欢

热点阅读