Purrr,write_csv 和命名事物

Purrr, write_csv and naming things

这是一个多步骤的过程,所以让我试着解释一下发生了什么...

我正在努力将大约 2000 个文件写入 csv。这是一个地理编码项目,并决定使用 tidygeocoder,不幸的是会导致超时错误,但它在我的工作流程中运行良好。

第一个过程是从 csv 中读取各种文件,并为它们命名。只测试前 4 个文件,这样我就可以正确处理了。

将 4 个文件名传递给 read_csv,然后设置名称,最后在每个文件中都有一个 Combine_Address 列,我用它来进行地理编码。再次没有问题。然而,最后一个问题是命名。

四个文件中的每一个都应该有一个唯一的名称,但我始终以错误消息结尾

stream_delim_(df, path, ..., bom = bom, quote_escape = quote_escape) 错误: 无效连接

这两者的结果...

# Loop geocode over .csv and export -------------------

files_to_read <- str_subset(list.files(here("excel_output", "csv_output"),
                pattern = ".csv$", full.names = T),
                ".csv")

file_names <- str_subset(list.files(here("excel_output", "csv_output"),
                pattern = ".csv$"),
                ".csv") %>% 
  str_remove(., ".csv")


files_to_read[1:4] %>% 
  map(~read_csv(.x)) %>%
  set_names(nm = file_names[1:4]) %>% 
  walk(~.x %>%
         geocode(Combine_Address) %>%
         write_csv(path = here("excel_output", "geocode_output", "_geocode.csv")))

上面的代码运行良好,但只输出一个名为“_geocode.csv”的文件,但 paste0 和 glue 都产生了代码错误。不知道现在该尝试什么。任何见解将不胜感激。

您可以在一次 map 调用中完成此操作。尝试:

library(readr)

files_to_read[1:4] %>% 
  purrr::map(~read_csv(.x) %>%  
               geocode(Combine_Address) %>% 
               write_csv(sprintf('geocode_output_%s_geocode.csv', basename(.x))))