Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

brackets

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)
outsideBrackets(x, type = "[")
curlyBrackets(x, outside = FALSE)
squareBrackets(x, outside = FALSE)
roundBrackets(x, outside = FALSE)

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

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, squareBrackets and roundBrackets are just special cases of the functions insideBrackets and outsideBrackets, using the argument type as either "{", "[" or "(".

The function outsideBrackets itself can be considered a special case of the function insideBrackets, when it uses the argument 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

Adrian Dusa's Miscellaneous

v0.12
GPL (>= 3)
Authors
Adrian Dusa [aut, cre, cph] (<https://orcid.org/0000-0002-3525-9253>)
Initial release
2021-03-16

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.