问题描述
这是一个多步骤的过程,所以让我尝试解释发生了什么...
Am正在将大约2000个文件写入csv。这是一个地理编码项目,并决定使用tidygeocoder,不幸的是,它会导致一定频率的超时错误,但在我的工作流程中效果很好。
第一个过程是从csv中读取各种文件并命名。只需对前4个文件进行测试,这样我就可以正确完成此过程。
将4个文件名传递给read_csv,然后设置名称,最后在每个文件中都有一个Combine_Address列,我使用它对地址进行地理编码。再次没有问题。但是,最后一个问题是命名。
四个文件中的每个文件都应具有唯一的名称,但我始终以错误消息结尾
stream_delim_(df,path,...,bom = bom,quote_escape = quote_escape)中的错误: 无效的连接
这是由于这两个原因造成的...
- write_csv(path = here(“ excel_output”,“ geocode_output”,paste0(names(.x),“ _ geocode.csv”))))
和
- write_csv(path = here(“ excel_output”,“ geocode_output”,胶水(“ {names(.x)} _ geocode.csv”)))))
# 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",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和粘胶都产生了代码错误。不知所措现在尝试什么。任何见识将不胜感激。
解决方法
您可以在一个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))))