Is an Argument a Filter Condition?
Arguments
- arg
Quosure - filtering condition.
- optional
Logical - is the argument optional? Defaults to
FALSE
.
Details
Check if arg
is a suitable filtering condition to be used in
functions like subset
or dplyr::filter
.
See also
Checks for valid input and returns warning or errors messages:
assert_atomic_vector()
,
assert_character_scalar()
,
assert_character_vector()
,
assert_data_frame()
,
assert_date_vector()
,
assert_expr_list()
,
assert_expr()
,
assert_function_param()
,
assert_integer_scalar()
,
assert_list_element()
,
assert_list_of()
,
assert_logical_scalar()
,
assert_named()
,
assert_numeric_vector()
,
assert_one_to_one()
,
assert_param_does_not_exist()
,
assert_s3_class()
,
assert_same_type()
,
assert_symbol()
,
assert_unit()
,
assert_vars()
,
assert_varval_list()
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.