读取多个文件,创建一个数据框并添加一个新列,其中包含R中每个文件的名称

时间:2019-11-20 14:35:06

标签: read.table multiple-file-upload

我是使用dplyr软件包的新手,我一直试图读取R中的多个文件,然后通过绑定所有行来创建数据帧,但是将每个文件的名称都包括为新列。此新列是数据中不包括的相应日期。

我的文件列表(例如):
01012019.aps
02012019.aps

我想要这样的最终数据框:

x y file      date
1 4 01012019  01-01-2019
2 5 01012019  01-01-2019
3 6 02012019  02-01-2019
4 7 02012019  02-01-2019

我一直在尝试:

path_aps<- "C:/Users/.../.../APS"

files_aps <- list.files(path_aps, pattern = "*.aps")

data_aps <- files_aps %>%
  map(~ read.table(file.path(path_aps, .), sep = "\t")) %>%
  map(~ mutate(filename = files_aps, .))%>%
  reduce(gtools::smartbind)

但是我收到此错误:

  

错误:列filename的长度必须为288(行数)或一个,而不是61。

我知道files_aps中的文件列表包含61个元素,因为这是我目录中的文件数,而288是每个.aps文件的行数;但是,我无法使其工作到每个.aps文件的扩展名。我一直在阅读类似问题的多个答案,但仍然没有得到预期的结果。

1 个答案:

答案 0 :(得分:0)

我已经在其他answer的帮助下解决了这个问题,我已经知道了:

data_aps <- list.files(path_aps, pattern = "*.aps", full.names = TRUE) %>% map_df(function(x) read.table(x, sep = "\t") %>% mutate(filename=gsub(".aps","", basename(x))))

相关问题