如果您能帮助我弄清楚整条代码的方式,那就太好了。
假设我有一些数据框:
guys <- tribble(
~First, ~Last,
"John", "Jacob",
"Jingle", "Heimer",
"Schmidt", "Tara Rara Rara Rara")
cars <- tribble(
~Make, ~Model,
"VW", "Jetta",
"Nissan", "Altima",
"Ford", "GT")
the_tables <- c("guys", "cars")
file_pattern <- "./%s.csv"
无编排方式:
for (table_name in the_tables) {
x <- get(table_name)
path <- sprintf(file_pattern, table_name)
write_csv(x = x, path = path)
}
这很简单也可以。但是我们有很不错的评估工具,其中有一个for
。
整理方法1:
tables_df <- tibble(
x = map(the_tables, get),
path = sprintf(file_pattern, the_tables))
pwalk(tables_df, write_csv)
虽然它使用pwalk
来抽象功能组件。将数据集的副本存储在中间表tables_df
中有一个缺点。
即使%>%
,也必须将所有这些巨大的数据集(汽车和人)临时存储在临时表中。
我想要的是我认为的承诺,但还不太清楚。
table_df <- tibble(
x = promise(the_tables),
path = sprintf(file_pattern, the_tables))
我已经尝试过类似x = syms(the_tables)
之类的事情来获得这样的承诺,也尝试过x = quos(syms(the_tables))
;但我仍然缺少一些东西。
谢谢。
然后,当然,我想将其全部整理。
the_tables %>% { tibble(
x = promise(.),
path = sprintf(file_pattern, .))
} %>%
pwalk(write_csv)
太好了。停顿,只剩下一件。
您是否也可以共享运行最后一个片段时给您的错误?