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
, 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