如何在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)))