From 2548539dc46dd7e40fd3579edbda0f6f5e1ed988 Mon Sep 17 00:00:00 2001 From: JulioV Date: Thu, 5 Mar 2020 13:23:21 -0500 Subject: [PATCH] Fix bug when application foreground list was empty --- src/data/application_genres.R | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/data/application_genres.R b/src/data/application_genres.R index 0da5b26a..60d87f28 100644 --- a/src/data/application_genres.R +++ b/src/data/application_genres.R @@ -33,24 +33,27 @@ genre_catalogue <- data.frame() catalogue_source <- snakemake@params[["catalogue_source"]] update_catalogue_file <- snakemake@params[["update_catalogue_file"]] scrape_missing_genres <- snakemake@params[["scrape_missing_genres"]] +apps_with_genre <- data.frame(matrix(ncol=length(colnames(apps)) + 1,nrow=0, dimnames=list(NULL, c(colnames(apps), "genre")))) -if(catalogue_source == "GOOGLE"){ - apps_with_genre <- apps %>% mutate(genre = NA_character_) -} else if(catalogue_source == "FILE"){ - genre_catalogue <- read.csv(snakemake@params[["catalogue_file"]], colClasses = c("character", "character")) - apps_with_genre <- left_join(apps, genre_catalogue, by = "package_name") -} +if(nrow(apps) > 0){ + if(catalogue_source == "GOOGLE"){ + apps_with_genre <- apps %>% mutate(genre = NA_character_) + } else if(catalogue_source == "FILE"){ + genre_catalogue <- read.csv(snakemake@params[["catalogue_file"]], colClasses = c("character", "character")) + apps_with_genre <- left_join(apps, genre_catalogue, by = "package_name") + } -if(catalogue_source == "GOOGLE" || (catalogue_source == "FILE" && scrape_missing_genres)){ - apps_without_genre <- (apps_with_genre %>% filter(is.na(genre)) %>% distinct(package_name))$package_name - updated_apps <- get_genre(apps_without_genre) - apps_with_genre <- left_join(apps_with_genre, updated_apps, by = "package_name") %>% - mutate(genre = coalesce(genre.x, genre.y)) %>% - select(-genre.x, -genre.y) + if(catalogue_source == "GOOGLE" || (catalogue_source == "FILE" && scrape_missing_genres)){ + apps_without_genre <- (apps_with_genre %>% filter(is.na(genre)) %>% distinct(package_name))$package_name + updated_apps <- get_genre(apps_without_genre) + apps_with_genre <- left_join(apps_with_genre, updated_apps, by = "package_name") %>% + mutate(genre = coalesce(genre.x, genre.y)) %>% + select(-genre.x, -genre.y) - if(update_catalogue_file){ - genre_catalogue <- bind_rows(genre_catalogue, updated_apps) %>% distinct() - write.csv(genre_catalogue, file = snakemake@params[["catalogue_file"]], row.names = FALSE) + if(update_catalogue_file){ + genre_catalogue <- bind_rows(genre_catalogue, updated_apps) %>% distinct() + write.csv(genre_catalogue, file = snakemake@params[["catalogue_file"]], row.names = FALSE) + } } }