purrr::map_dfr 给出列表元素的数量作为 .id 参数,而不是列表元素的值
purrr::map_dfr gives number of list element as .id argument, not value of list element
我需要将 .xls 文件列表导入 R。相当标准的操作,使用 file.list 和 purrr,之前做过几次。出于某种原因,我无法使用 readxl 包,因为我不断收到 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")
我得到一个输出,其中 source
列包括列表中文件的 位置 (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")
可以通过-
从位置获取文件名
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
我需要将 .xls 文件列表导入 R。相当标准的操作,使用 file.list 和 purrr,之前做过几次。出于某种原因,我无法使用 readxl 包,因为我不断收到 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")
我得到一个输出,其中 source
列包括列表中文件的 位置 (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")
可以通过-
从位置获取文件名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