正在将不同文件夹中的.tsv文件读取到R环境中,并添加具有文件夹名称的列

正在将不同文件夹中的.tsv文件读取到R环境中,并添加具有文件夹名称的列,r,csv,R,Csv,我试图将一系列.tsv输出文件读入R环境中的同一数据帧中。但是,每个输出文件位于不同的子文件夹中,但具有相同的名称 Folder1中的file.tsv示例 A B C 1 1 40 2 1 45 示例路径: A:/output/Folder1/file.tsv A:/output/Folder2/file.tsv A:/output/Folder3/file.tsv 文件夹名包含重要信息,我希望将其保存在聚合数据框中 例如: A B C folder

我试图将一系列.tsv输出文件读入R环境中的同一数据帧中。但是,每个输出文件位于不同的子文件夹中,但具有相同的名称

Folder1中的file.tsv示例

  A B   C
  1 1   40
  2 1   45
示例路径:

A:/output/Folder1/file.tsv

A:/output/Folder2/file.tsv

A:/output/Folder3/file.tsv

文件夹名包含重要信息,我希望将其保存在聚合数据框中

例如:

  A B   C   folder 
  1 1   40  Folder1 
  2 1   45  Folder1 
  3 1   50  Folder2
  4 1   55  Folder2
  5 1   60  Folder3
  6 1   65  Folder3
我找到了允许您从不同文件夹()读入和附加.tsv文件的答案,但我一直在研究如何添加一个名为文件夹的列。我有395个独特的文件夹,所以手工制作专栏我只想作为最后的手段

感谢您的宝贵见解

对我的。您需要执行以下步骤:

# load the needed packages
library(dplyr)

# create a list of the filenames with the full path
file.list <- list.files(pattern='*.tsv', recursive = TRUE, full.names = TRUE)

# read the files into a list
# using 'simplify=FALSE' makes sure the full paths are used as names in the list
df.list <- sapply(file.list, read.delim, simplify=FALSE)

# bind the dataframes in the list together with 'bind_rows' from the dplyr-package
# use to replace the full path name with the folder name
df <- bind_rows(df.list, .id = "folder") %>%
  mutate(folder = sub('.*/(.*)/.*$', '\\1', folder))
#加载所需的包
图书馆(dplyr)
#创建具有完整路径的文件名列表

file.list非常感谢您的帮助!我对此所做的唯一更改是表示文件是以制表符分隔的,而不是以逗号分隔的,我是这样做的,`df.list@Charlotte确实有效。我发现我忘记将
read.csv
更改为
read.delim
(默认设置为
sep=“\t”
)。