@@ -587,7 +587,8 @@ get_before_after_from_window <- function(window_size, align, time_type) {
587
587
# ' `time_type` of `.x`
588
588
# ' - `{.align_abbr}` will be `""` if `.align` is the default of `"right"`;
589
589
# ' otherwise, it will be the first letter of `.align`
590
- # ' - `{.f_abbr}` will be a short string based on what `.f`
590
+ # ' - `{.f_abbr}` will be a character vector containing a short abbreviation
591
+ # ' for `.f` factoring in the input column type(s) for `.col_names`
591
592
# '
592
593
# ' @importFrom dplyr bind_rows mutate %>% arrange tibble select all_of
593
594
# ' @importFrom rlang enquo expr_label caller_arg quo_get_env
@@ -681,22 +682,23 @@ epi_slide_opt <- function(
681
682
col_names_chr <- names(.x )[pos ]
682
683
683
684
# Check that slide function `.f` is one of those short-listed from
684
- # `data.table` and `slider` (or a function that has the exact same
685
- # definition, e.g. if the function has been reexported or defined
686
- # locally).
685
+ # `data.table` and `slider` (or a function that has the exact same definition,
686
+ # e.g. if the function has been reexported or defined locally). Extract some
687
+ # metadata. `namer` will be mapped over columns (.x will be a column, not the
688
+ # entire edf).
687
689
f_possibilities <-
688
690
tibble :: tribble(
689
- ~ f , ~ package , ~ abbr ,
690
- frollmean , " data.table" , " av" ,
691
- frollsum , " data.table" , " sum" ,
692
- frollapply , " data.table" , " slide" ,
693
- slide_sum , " slider" , " sum" ,
694
- slide_prod , " slider" , " prod" ,
695
- slide_mean , " slider" , " av" ,
696
- slide_min , " slider" , " min" ,
697
- slide_max , " slider" , " max" ,
698
- slide_all , " slider" , " all" ,
699
- slide_any , " slider" , " any" ,
691
+ ~ f , ~ package , ~ namer ,
692
+ frollmean , " data.table" , ~ if (is.logical( .x )) " prop " else " av" ,
693
+ frollsum , " data.table" , ~ if (is.logical( .x )) " count " else " sum" ,
694
+ frollapply , " data.table" , ~ " slide" ,
695
+ slide_sum , " slider" , ~ if (is.logical( .x )) " count " else " sum" ,
696
+ slide_prod , " slider" , ~ " prod" ,
697
+ slide_mean , " slider" , ~ if (is.logical( .x )) " prop " else " av" ,
698
+ slide_min , " slider" , ~ " min" ,
699
+ slide_max , " slider" , ~ " max" ,
700
+ slide_all , " slider" , ~ " all" ,
701
+ slide_any , " slider" , ~ " any" ,
700
702
)
701
703
f_info <- f_possibilities %> %
702
704
filter(map_lgl(.data $ f , ~ identical(.f , .x )))
@@ -780,7 +782,7 @@ epi_slide_opt <- function(
780
782
.n = n ,
781
783
.time_unit_abbr = time_unit_abbr ,
782
784
.align_abbr = align_abbr ,
783
- .f_abbr = f_info $ abbr ,
785
+ .f_abbr = purrr :: map_chr( .x [ col_names_chr ], unwrap( f_info $ namer )) ,
784
786
quo_get_env(col_names_quo )
785
787
)
786
788
.new_col_names <- unclass(
0 commit comments