# gen.logical.and: Generate Logical Conditions with List Comprehension In listcompr: List Comprehension for R

## Description

Functions to compose and-/or-connected logical conditions, based on variable ranges and additional conditions.

## Usage

 ```1 2 3``` ```gen.logical.and(.expr, ...) gen.logical.or(.expr, ...) ```

## Arguments

 `.expr` A base expression which is partially evaluated for all combinations of variables. It may still contain free variables. `...` Arbitrary many variable ranges and conditions.

## Details

See `gen.list` for more details on the `.expr` and `...` parameters.

For variables with underscores additionally the evaluation of indices in `()`-brackets is supported. For example, an expression `x_(i+1)` is evaluated as `x_3` for `i = 2`.

## Value

Returns an expression `expr_1 & ... & expr_n` or `expr_1 | ... | expr_n` where `expr_i` is generated from `.expr`, where all free variables are substituted for which a range is given. The other variables remain untouched.

The generated condition may be used within the the conditions of `gen.list` and similar functions from this package.

`gen.list` to generate lists and thereby make use of the generated logical conditions, and listcompr for an overview of all list comprehension functions.
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14``` ```# Returns a_1 == 1 & a_2 == 2 & a_3 == 3 gen.logical.and(a_i == i, i = 1:3) # A data frame of tuples (x_1, x_2, x_3, x_4) summing up to 10 with x_i <= x_(i+1) gen.data.frame(c(x_1, ..., x_4), x_ = 1:10, x_1 + ... + x_4 == 10, gen.logical.and(x_i <= x_(i+1), i = 1:3)) # Get all permutations of 1:4 gen.data.frame(c(a_1, ..., a_4), a_ = 1:4, gen.logical.and(a_i != a_j, i = 1:4, j = (i+1):4)) # Get again the permutations of 1:4, using filter from dplyr df <- gen.data.frame(c(a_1, ..., a_4), a_ = 1:4) dplyr::filter(df, !!gen.logical.and(a_i != a_j, i = 1:3, j = (i+1):4)) ```