Skip to contents

Is an Argument a Filter Condition?

Usage

assert_filter_cond(arg, optional = FALSE)

Arguments

arg

Quosure - filtering condition.

optional

Logical - is the argument optional? Defaults to FALSE.

Value

Performs necessary checks and returns arg if all pass. Otherwise throws an informative error.

Details

Check if arg is a suitable filtering condition to be used in functions like subset or dplyr::filter.

Examples

library(pharmaversesdtm)
library(dplyr, warn.conflicts = FALSE)
library(rlang)
data(dm)

# typical usage in a function as an argument check
example_fun <- function(dat, x) {
  x <- assert_filter_cond(enquo(x))
  filter(dat, !!x)
}

example_fun(dm, AGE == 64)
#> # A tibble: 5 × 25
#>   STUDYID      DOMAIN USUBJID   SUBJID RFSTDTC RFENDTC RFXSTDTC RFXENDTC RFICDTC
#>   <chr>        <chr>  <chr>     <chr>  <chr>   <chr>   <chr>    <chr>    <chr>  
#> 1 CDISCPILOT01 DM     01-701-1… 1023   2012-0… 2012-0… 2012-08… 2012-09… NA     
#> 2 CDISCPILOT01 DM     01-703-1… 1042   2013-0… 2013-0… 2013-03… 2013-08… NA     
#> 3 CDISCPILOT01 DM     01-706-1… 1041   2013-1… 2014-0… 2013-12… 2014-07… NA     
#> 4 CDISCPILOT01 DM     01-713-1… 1179   2013-0… 2014-0… 2013-08… 2014-02… NA     
#> 5 CDISCPILOT01 DM     01-717-1… 1344   2014-0… 2014-0… 2014-01… 2014-03… NA     
#> # ℹ 16 more variables: RFPENDTC <chr>, DTHDTC <chr>, DTHFL <chr>, SITEID <chr>,
#> #   AGE <dbl>, AGEU <chr>, SEX <chr>, RACE <chr>, ETHNIC <chr>, ARMCD <chr>,
#> #   ARM <chr>, ACTARMCD <chr>, ACTARM <chr>, COUNTRY <chr>, DMDTC <chr>,
#> #   DMDY <dbl>

try(example_fun(dm, USUBJID))
#> Error in filter(dat, !!x) :  In argument: `USUBJID`.
#> Caused by error:
#> ! `..1` must be a logical vector, not a character vector.