diff --git a/DESCRIPTION b/DESCRIPTION index 680f60a..4eb5166 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: LifemapR Title: Data Visualisation on 'Lifemap' Tree Version: 1.1.1 -Imports: leaflet, shiny, jsonlite, dplyr, leaflet.minicharts, htmltools, rlang, RCurl, fastmatch +Imports: leaflet, shiny, jsonlite, dplyr, tidyr, leaflet.minicharts, htmltools, rlang, RCurl, fastmatch Authors@R: c( person("Cassandra", "Bompard", role = "aut", email = "cassbomp68@gmail.com"), person("Damien M.", "de Vienne", role = "aut", email = "damien.de-vienne@univ-lyon1.fr"), diff --git a/NAMESPACE b/NAMESPACE index 330702b..00acb0d 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -18,11 +18,17 @@ export(make_newick) export(pass_infos) export(pass_infos_discret) importFrom(RCurl,url.exists) +importFrom(dplyr,all_of) +importFrom(dplyr,arrange) importFrom(dplyr,bind_rows) +importFrom(dplyr,count) importFrom(dplyr,distinct) importFrom(dplyr,full_join) +importFrom(dplyr,group_by) importFrom(dplyr,join_by) importFrom(dplyr,left_join) +importFrom(dplyr,rename) +importFrom(dplyr,select) importFrom(fastmatch,fmatch) importFrom(htmltools,HTML) importFrom(htmltools,p) @@ -55,3 +61,5 @@ importFrom(shiny,observe) importFrom(shiny,reactive) importFrom(shiny,shinyApp) importFrom(stats,complete.cases) +importFrom(stats,na.omit) +importFrom(tidyr,pivot_wider) diff --git a/R/create_matrix.R b/R/create_matrix.R index cdde5f8..0e13923 100644 --- a/R/create_matrix.R +++ b/R/create_matrix.R @@ -61,7 +61,10 @@ pass_infos <- function(M, FUN, value){ #' #' @return A dataframe containing the TaxIDs and as many columns as there are distinct values. #' @export -#' @importFrom dplyr bind_rows +#' @importFrom dplyr select group_by count rename arrange all_of +#' @importFrom tidyr pivot_wider +#' @importFrom stats na.omit +#' @importFrom rlang .data #' #' @examples #' data(LM_eukaryotes) @@ -70,13 +73,15 @@ pass_infos <- function(M, FUN, value){ #' #' inferred_values <- pass_infos_discret(M = infos, value = "Status") pass_infos_discret <- function(M, value) { - tabled <- tapply(M[[value]], M$ancestor, function(x){ - x <- x[!is.na(x)] - table(x)}) - bind_values <- as.data.frame(dplyr::bind_rows(tabled)) - bind_values[is.na(bind_values)] <- 0 - bind_values$taxid <- names(tabled) + bind_values <- M |> + dplyr::select(.data$ancestor, dplyr::all_of(value)) |> + stats::na.omit() |> + dplyr::group_by(.data$Status, .data$ancestor) |> + dplyr::count() |> + tidyr::pivot_wider(names_from = .data$Status, values_from = .data$n, values_fill = 0) |> + as.data.frame() |> + dplyr::rename("taxid" = "ancestor") |> + dplyr::arrange(.data$taxid) + return(bind_values) } - -