knitr::opts_chunk$set(echo = TRUE)

#devtools::install_github("ropenscilabs/roomba")
library(roomba)
path <- getwd()
n_abstracts <- 10
step4 %>% list %>% View
load(glue("{path}/../librarian/data/publications.Rdata"))
load(glue("{path}/../librarian/data/author_publications.Rdata"))
init_len <- nrow(publications)

  message(glue("Getting abstract of {n_abstracts} entries..."))

  already <- publications$dc_identifier %>% map_chr(1)

  step4 <- author_publications %>%
    filter(subtype_description %in% c("Chapter", "Article", "Book", "Conference Paper")) %>%
    filter(!dc_identifier %in% already) %>%
    slice(1:n_abstracts) %>%
    scopus_get_publication

  #save(step4, file = glue("{path}/../data/tmp/step4.Rdata"))
  transform_list_prog <- progressively(possibly(transform_list, otherwise = NULL), n_abstracts)

  message(glue("Parsing information..."))

  publications <<- publications <- step4$entries %>%
    map(~{
      .x$`abstracts-retrieval-response` %>% transform_list_prog
    }) %>%
    #map(~{tibblize_columns(.x)}) %>%
    bind_rows %>%
    mutate(api_key = api_key, 
           retrieval_time = Sys.time()) %>%  
    mutate(dc_identifier  = coredata %>% map_chr(~.x$dc_identifier)) %>%
    filter(!duplicated(dc_identifier))

  x <- step4$entries[[1]]$`abstracts-retrieval-response`$coredata



    publications$dc_identifier
    test 

# Fälle

Use Cases

## heterogene Liste
case_1 <- list(a = 1, b = 2, c = list(e = list(g = 5, h = 6), d = 4))
case_1

### repetition
case_2 <- list(list(a = 1, b = 2)) %>% rep(., 5)
case_2

### only one character
case_3 <- list(name = "character")

Decsision

x <- step4$entries %>%
  map(transform_list)



 x %>% bind_rows
x <- x$`abstracts-retrieval-response` %>% transform_list
transform_list <- function(x){
  if(length(names(x)) == 0 & length(x) > 1){
    return(x %>% 
             map_df(~{
               x[[1]] %>%
                 transform_list %>% 
                 bind_rows %>%
                 janitor::clean_names(.) %>%
                 tibblize_columns()
             }) %>% 
             list %>% 
      set_names(names(x)))} # Case with no names transformed with bind_rows

  x %>%
    map2_dfc(.y = names(x), ~{
      if(is.null(.x)){return(NULL)}
      if(length(.y) == 0 & length(.x) == 1){return(tibble(.x) %>% as_tibble_c)} # 

      if(is.list(.x)){
        return(.x %>% 
                 transform_list %>% 
                 bind_cols %>%
                 janitor::clean_names(.) %>% list %>% tibble %>% set_names(.y))
      } else {
        return(.x  %>% tibble %>% set_names(.y))
      }
    }) 
}

publications %>% list %>% View

Action

action_1 <- function(x){
  x %>% 
    transform_list %>% 
    bind_cols %>%
    janitor::clean_names(.)
}

action_2 <- function(x){
  x %>% 
    transform_list %>% 
    bind_rows %>%
    set_names(names(x)) %>%
    janitor::clean_names(.)
}

# action_3 <- function(x){
#   x %>% as_tibble_c()
# }


benjaminguinaudeau/librarrry documentation built on May 3, 2019, 7:39 p.m.