如何在R中组合两个文件?

时间:2016-08-29 16:32:49

标签: r

我在一个dirctory中有几个文件:  我将它们全部列出:

  dir1<- list.files ("/data/", "*.txt", full.names = TRUE)
  Gh_12_kj.txt   
  kh_12_k.txt 
  Gh_13_kj.txt 
  kh_13_k.txt 

我可以像这样逐一阅读:

  for (i in seq_along(dir1)) {file =read.table(i) ……}

我想组合所有名称相似但数字不同的文件,例如:

  Rbind Gh_12_kj.txt and Gh_13_kj.txt 
  Rbind s_13_f.txt and s_12_f.txt     and so on for all files in this dirctory

我想我们需要unique但不需要如何

1 个答案:

答案 0 :(得分:1)

由于'dir1'对象是使用full.names = TRUE中的list.files选项创建的,我们可以使用basenamefile_path_sans_ext(来自tools提取文件名}),然后split'dir1'由'files'的子字符串表示,即只保留'Gh_j_df.txt','kh_13_f_df.txt'中的'Ghkj_df','khf_df'等,循环通过嵌套list元素与lapply,然后再次循环并使用fread读取文件并将它们与rbindlist一起绑定。

library(data.table)
library(tools)
files <- file_path_sans_ext(basename(dir1))  
lapply(split(dir1, sub("^([^_]+)_\\d+_([^.]+)", "\\1\\2", files)), 
                          function(x) rbindlist(lapply(x, fread)))