atorus-research / Tplyr

Home Page:https://atorus-research.github.io/Tplyr/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Nested count layers has unexpected sort variable behavior when using by variables

mstackhouse opened this issue · comments

Prerequisites

Bug exists in CRAN version 1.1.0, not resolved via #172 - this is new

Description

Nested count layers have the inner/outer layer consideration while processing data. When by variables are applied application of the ord_layer_ value for the inner layer seems to ignore the by variables. The outer layer row is supposed to get a value of Inf or -Inf, but the by variables themselves are being ignored.

When using alphabetical / factor levels, the build completes, but when the bycount sort method is used it leads to a recycle failure.

Steps to Reproduce (Bug Report Only)

adae <- tplyr_adae %>%
  head(300)

t_ae1 <- tplyr_table(adae, TRTA) %>%
  add_layer(
    group_count(vars(AEBODSYS, AEDECOD), by = vars(AESEV)) %>% 
      set_order_count_method("bycount") %>% 
      set_ordering_cols("Xanomeline High Dose") %>% 
      set_result_order_var(distinct_n)
  )

t_ae_df1 <- t_ae1 %>%
  build()

Error in `purrr::map()`:In index: 1.
Caused by error in `[<-`:
! Assigned data `get_data_order_bycount(...)` must be compatible with row subscript `-1`.117 rows must be assigned.Assigned data has 303 rows.Only vectors of size 1 are recycled.
Caused by error in `vectbl_recycle_rhs_rows()`:
! Can't recycle input of size 303 to size 117.
Run `rlang::last_trace()` to see where the error occurred.

Expected behavior: [What you expected to happen]

The bycount values should be extracted from the distinct_n counts and applied properly. The multiple levels of the AEBODSYS outer layer row should collectively have a value of Inf

Actual behavior: [What actually happened]

Error thrown

Versions

You can get this information from executing sessionInfo().