我有一個包含不同檔案的檔案夾,每個檔案都有不同的格式,所以我創建了不同的函式來讀取每個檔案。是否可以使用map將相應的功能應用于相應的檔案?
我發現這篇文章將幾個函式應用于物件,但我認為在這種情況下不適用,因為這里總是應用所有函式。
all_files <- list.dirs(file.path(path))
fun_A <- function(x) {read.csv(x)}
fun_B <- function(x) {read.table(x)}
fun_C <- function(x) {read.delim(x)}
funs <- c(fun_A , fun_B , fun_C)
因此,如果我手動執行它,它可以作業:
(all_files %>%
purrr::map(., ~list.files(., full.names = T)))[[1]][1] %>% fun_A() %>%
dplyr::bind_rows((all_files %>%
purrr::map(., ~list.files(., full.names = T)))[[1]][2] %>% fun_B ()) %>%
dplyr::bind_rows((all_files %>%
purrr::map(., ~list.files(., full.names = T)))[[1]][3] %>% fun_C())
但是我嘗試了幾次,但我purrr無法使其作業。這是我最后的嘗試:
all_files %>% purrr::map(.x = ., ~{
df = (.x)
funs %>% purrr::map(., ~ df %>% (.))
})
有什么建議?
uj5u.com熱心網友回復:
您可以使用Map或map2按照@akrun 的建議
do.call(rbind, Map(function(x, y) y(x), all_files, funs))
使用map2_df:
purrr::map2_df(all_files, funs, ~.y(.x))
為此,預計length(all_files)和length(funs)是平等的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/447808.html
上一篇:React:當搜索不匹配時,如何為TypeAhead組件呈現回退?
下一篇:將資訊從一本字典復制到新字典
