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) 错误:
无效连接
这两者的结果...
- write_csv(path = here("excel_output", "geocode_output", paste0(names(.x),"_geocode.csv"))))
和
- write_csv(path = here("excel_output", "geocode_output", glue("{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", "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))))
这是一个多步骤的过程,所以让我试着解释一下发生了什么...
我正在努力将大约 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", glue("{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", "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))))