首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取多个文件,创建一个数据框架,并添加一个新列,其中包含R中每个文件的名称

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

Stack Overflow用户
提问于 2019-11-20 14:35:06
回答 1查看 409关注 0票数 0

我是新使用dplyr包的,我一直在尝试读取R中的多个文件,然后通过绑定所有行来创建一个数据框架,但将每个文件的名称作为一个新列。此新列是未包含在数据中的对应日期。

我的文件列表(例如):

01012019.aps

02012019.aps

我想让我的最后数据像这样:

代码语言:javascript
复制
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

我一直在尝试这个:

代码语言:javascript
复制
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文件的扩展。我已经阅读了多个类似问题的答案,但我仍然没有得到预期的结果。

EN

回答 1

Stack Overflow用户

发布于 2019-11-20 22:02:10

我在另一个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))))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58956818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档