Skip to content

predicate in_set inverse with missing values #133

@AnthonyEbert

Description

@AnthonyEbert

With the predicate in_set with argument inverse=TRUE, the argument allow.na works in the opposite way to what is expected.

library(dplyr)
library(survival)

veteran_totals = veteran %>%
  group_by(celltype) %>%
  summarise(cell_total = n())
  
veteran_totals$cell_total[1] <- NA
 
veteran_totals %>% assertr::assert(cell_total, predicate = assertr::in_set(10:20, inverse = TRUE, allow.na = TRUE)) 
>Column 'cell_total' violates assertion 'assertr::in_set(10:20, inverse = TRUE, allow.na = TRUE)' 1 time
>  verb redux_fn                                               predicate     column index value
>1 assert       NA assertr::in_set(10:20, inverse = TRUE, allow.na = TRUE) cell_total     1    NA
>
>Error: assertr stopped execution

veteran_totals %>% assertr::assert(cell_total, predicate = assertr::in_set(10:20, inverse = TRUE, allow.na = FALSE))
> # A tibble: 4 × 2
> celltype  cell_total
>  <fct>          <int>
>1 squamous          NA
>2 smallcell         48
>3 adeno             27
>4 large             27

I guess you could fix this with a line allow.na = ifelse(inverse, !allow.na, allow.na) in the first line of the function. ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions