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

如何在R中合并两个文件?,r,R,我在一个目录中有几个文件: 我使用以下方法列出了所有这些问题: dir1<- list.files ("/data/", "*.txt", full.names = TRUE) Gh_12_kj.txt kh_12_k.txt Gh_13_kj.txt kh_13_k.txt 我想将名称相似但编号不同的所有文件组合在一起,例如: Rbind Gh_12_kj.txt and Gh_13_kj.txt Rbind s_13_f.txt and s_

我在一个目录中有几个文件: 我使用以下方法列出了所有这些问题:

  dir1<- list.files ("/data/", "*.txt", full.names = TRUE)
  Gh_12_kj.txt   
  kh_12_k.txt 
  Gh_13_kj.txt 
  kh_13_k.txt 
我想将名称相似但编号不同的所有文件组合在一起,例如:

  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
,但不需要sur-how

,因为'dir1'对象是使用
full.names=TRUE
选项从
list.files
中创建的,我们可以使用
basename
文件路径\u sans\u ext
(来自
tools
)提取文件名,然后
按“文件”的子字符串拆分“dir1”,即只保留“Ghkj_df”、“khf_df”等。在“ghu 12_kj_df.txt”、“kh_13_f_df.txt”中,使用
lappy
循环通过嵌套的
列表
元素,然后再次循环并使用
fread
读取文件,并将它们与
rbindlist
一起rbind

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)))
库(data.table)
图书馆(工具)

文件你的意思是它不相似吗?@bicton不清楚这个错误。
split(dir1,sub(“.*”,“”,files))
@bicton根据您在文章中的描述,这些文件被分组到一起,并且
rbind
ed,这就是代码所做的。i、 e.
v1@bicton是的,通过使用
sub
,我们只提取
kh
Gh
部分,因此我们将
Gh
文件作为一个列表元素,同样地,
kh
作为另一个列表元素,然后我们循环遍历每个嵌套元素,并使用
fread
读取它,
rbind
让我们一起来吧。
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)))