首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个文件读入R后,如何将生成的df设置为文件名?

将多个文件读入R后,如何将生成的df设置为文件名?
EN

Stack Overflow用户
提问于 2017-02-01 04:26:24
回答 1查看 228关注 0票数 0

目前,我正在使用下面的代码一次将~7-10个文件读入R控制台。

代码语言:javascript
复制
library(magrittr)
library(feather)

list.files("C:/path/to/files",pattern="\\.feather$") %>% lapply(read_feather)

如何根据它们的唯一文件名将它们导入到独立的数据对象中?

例如。

代码语言:javascript
复制
accounts_jan.feather
users_jan.feather
-> read feather function -> hold in working memory as:
accounts_jan_df
users_jan_df

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-01 05:21:26

这看起来像是试图用管道(https://github.com/hrbrmstr/rstudioconf2017/blob/master/presentation/writing-readable-code-with-pipes.key.pdf)做太多的事情。我建议将您的流程稍微细分一下:

代码语言:javascript
复制
# Get vector of files
files <- list.files("C:/path/to/files", pattern = "\\.feather$")

# Form object names
object_names <- 
  files %>%
  basename %>%
  file_path_sans_ext

# Read files and add to environment
lapply(files, 
       read_feather) %>%
  setNames(object_names) %>%
  list2env()

如果您确实必须使用单个管道执行此操作,则应该使用mapply,因为它有一个USE.NAMES参数。

代码语言:javascript
复制
list.files("C:/path/to/files", pattern = "\\feather$") %>%
  mapply(read_feather,
         .,
         USE.NAMES = TRUE,
         SIMPLIFY = FALSE) %>%
  setNames(names(.) %>% basename %>% tools::file_path_sans_ext) %>%
  list2env()

就我个人而言,当我去做调试时,我发现第一种选择更容易理解(我不是管道中管道的粉丝)。

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

https://stackoverflow.com/questions/41966873

复制
相关文章

相似问题

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