мурлыканье, объединяющее два пересечения с общим списком - PullRequest
0 голосов
/ 22 мая 2018

Я хотел бы использовать purrr для создания пути, следующего за формой

some_path/year/filename_with_year.xls

, где файлы находятся в подкаталоге на основе того же списка лет, который использовался для создания части имени файла

Пока я могу создать первую часть пути и имя файла с cross3 и cross2, но мне не удается разумным образом объединить их в полный путь

library(tidyverse)

year_list<-c(2008,2009,2010, 2011)
country_list<-c("Andorra","Belarus")
remote_base_path<-"some_path"

filename<-cross3(country_list,year_list,".xls") %>%map(lift(paste0)) #create filename
filepath<-cross2(remote_base_path,year_list)%>%map(lift(file.path)) #create path


filename
filepath

Как я могу объединить их в логике purrr (например, другой cross2 и использование .filter?)?

Другой способ взглянуть на это состоит в том, что year_list отображаетсяв два списка, но с другими функциями.

1 Ответ

0 голосов
/ 22 мая 2018

Возможно, это не лучший подход, но вы можете попробовать:

l <- cross(list(c(2008,2009,2010, 2011), 
                c("Andorra","Belarus"), 
                "some_path")) %>%
  map(set_names, c("year", "country","remote"))

map_chr(l, ~ glue("{file.path(.$remote, .$year)}/{.$country}_{.$year}.xls"))

[1] "some_path/2008/Andorra_2008.xls" "some_path/2009/Andorra_2009.xls"
[3] "some_path/2010/Andorra_2010.xls" "some_path/2011/Andorra_2011.xls"
[5] "some_path/2008/Belarus_2008.xls" "some_path/2009/Belarus_2009.xls"
[7] "some_path/2010/Belarus_2010.xls" "some_path/2011/Belarus_2011.xls"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...