R语言 我有一个文件夹,有许多tsv文件,并希望创建几个基于文件名的多帧

k4emjkb1  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(104)

我以前从来没有在这个论坛上发帖,也不是很擅长r,但是我已经无计可施了,整天都在寻找答案和测试解决方案。tsv文件都是开始以一个ID开头,以.tsv结尾,几个文件共享相同的ID。我想为每个ID创建一个框架。例如,文件:A1.tsv A2.tsv A3.tsv B1.tsv B2.tsv B3.tsv从这些文件中,我想以一个文件名“A”和一个文件名“B”结束。我已经成功地使用fileNames/lapply/ribindlist为一个ID做到了这一点,当文件夹中只有一个ID类型的文件时,但未能能够循环通过整个文件夹包含所有文件,创建一个嵌套每个ID。任何建议?非常非常感谢!

j9per5c4

j9per5c41#

首先获取所有文件的名称并将其读入list

library(dplyr)
library(readr)

## identify the IDs
files = list.files(pattern = "tsv$")
## edited based on comments: first 4 characters is the ID
ID = files |> substr(1, 4) |> unique()

## for each ID, read in all matching files and bind them together
data = lapply(ID, \(x) {
  lapply(list.files(pattern = paste0(x, ".*tsv$")), read_tsv) |>
    bind_rows()
})
setNames(data, ID)

字符串
这将为您给予一个命名列表,其中每个列表项都是单个ID的单个数据框。

相关问题