Brackets {admisc} | R Documentation |

## Extract information from a multi-value SOP/DNF expression

### Description

Functions to extract information from an expression written in SOP - sum of products form, (or from the canonical DNF - disjunctive normal form) for multi-value causal conditions. It extracts either the values within brackets, or the causal conditions' names outside the brackets.

### Usage

```
insideBrackets(x, type = "[", invert = FALSE, regexp = NULL)
outsideBrackets(x, type = "[", regexp = NULL)
curlyBrackets(x, outside = FALSE, regexp = NULL)
squareBrackets(x, outside = FALSE, regexp = NULL)
roundBrackets(x, outside = FALSE, regexp = NULL)
```

### Arguments

`x` |
A DNF/SOP expression. |

`type` |
Brackets type: curly, round or square. |

`invert` |
Logical, if activated returns whatever is not within the brackets. |

`outside` |
Logical, if activated returns the conditions' names outside the brackets. |

`regexp` |
Optional regular expression to extract information with. |

### Details

Expressions written in SOP - sum of products are used in Boolean logic, signaling a disjunction of conjunctions.

These expressions are useful in Qualitative Comparative Analysis, a social science methodology that is employed in the context of searching for causal configurations that are associated with a certain outcome.

They are also used to draw Venn diagrams with the package ** venn**, which draws any
kind of set intersection (conjunction) based on a custom SOP expression.

The functions ** curlyBrackets**,

**and**

`squareBrackets`

**are just special cases of the functions**

`roundBrackets`

**and**

`insideBrackets`

**, using the argument**

`outsideBrackets`

**as either**

`type`

`"{"`

, `"["`

or `"("`

.
The function ** outsideBrackets** itself can be considered a special case of the
function

**, when it uses the argument**

`insideBrackets`

**.**

`invert = TRUE`

SOP expressions are usually written using curly brackets for multi-value conditions but to allow
the evaluation of unquoted expressions, they first needs to get past R's internal parsing system.
For this reason, multi-value conditions in unquoted expresions should use the square brackets
notation, and conjunctions should always use the product `*`

sign.

Sufficiency is recognized as `"=>"`

in quoted expressions but this does not pass over R's
parsing system in unquoted expressions. To overcome this problem, it is best to use the single
arrow `"->"`

notation. Necessity is recognized as either `"<="`

or `"<-"`

, both
being valid in quoted and unquoted expressions.

### Author(s)

Adrian Dusa

### Examples

```
sop <- "A[1] + B[2]*C[0]"
insideBrackets(sop) # 1, 2, 0
insideBrackets(sop, invert = TRUE) # A, B, C
# unquoted (valid) SOP expressions are allowed, same result
insideBrackets(A[1] + B[2]*C[0]) # the default type is "["
# curly brackets are also valid in quoted expressions
insideBrackets("A{1} + B{2}*C{0}", type = "{")
# or
curlyBrackets("A{1} + B{2}*C{0}")
# and the condition names
curlyBrackets("A{1} + B{2}*C{0}", outside = TRUE)
squareBrackets(A[1] + B[2]*C[0]) # 1, 2, 0
squareBrackets(A[1] + B[2]*C[0], outside = TRUE) # A, B, C
```

*admisc*version 0.35 Index]