[英]purrr::map_dfr gives number of list element as .id argument, not value of list element
我需要将.xls 文件列表导入到R。相当标准的操作,使用file.list 和purrr,之前做过几次。 出于某种原因,我无法使用 readxl package,因为我不断收到 libxls 错误,因此切换到 XLConnect,这似乎可行。
但是,使用以下代码:
file.list <- list.files('./Raw/', pattern = '.xls', full.names = TRUE)
rws <- function(x) {XLConnect::readWorksheetFromFile(x, sheet = 1, startRow =4)}
df <- purrr::map_dfr(file.list,rws, .id = "source")
我得到一个 output,其中source
列包括列表中文件的position (1,2,3,...),而不是文件名。 问题是什么?
尝试这样做
file.list <- list.files('./Raw/', pattern = '.xls', full.names = TRUE) %>%
purrr::set_names()
rws <- function(x) {XLConnect::readWorksheetFromFile(x, sheet = 1, startRow =4)}
df <- purrr::map_dfr(file.list,rws, .id = "source")
您可以通过以下方式从 position 获取文件的名称 -
library(dplyr)
library(purrr)
df <- map_dfr(file.list,rws, .id = "source") %>%
mutate(source = basename(file.list)[source])
#If you don't want the extension of the filename
#mutate(source = tools::file_path_sans_ext(basename(file.list))[source])
df
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.