Public methods
Method new()
Create a new Set object.
Usage
Set$new(..., universe = Universal$new(), elements = NULL, class = NULL)
Arguments
- ...
- ANYElements can be of any class except- list, as long as there is a unique- as.charactercoercion method available.
 
universeSet. Universe that the Set lives in, i.e. elements that could be added to
the Set. Default is Universal.
elementslist. Alternative constructor that may be more efficient if passing objects
of multiple classes.
classcharacter. Optional string naming a class that if supplied gives the set the
typed property. All elements will be coerced to this class and therefore there must be
a coercion method to this class available.
Returns
A new Set object.
Method print()
Prints a symbolic representation of the Set.
Usage
Set$print(n = 2)
Arguments
- n
- numeric. Number of elements to display on either side of ellipsis when printing. 
Details
The function useUnicode() can be used to determine if unicode should be used when
printing the Set. Internally print first calls strprint to create a printable representation
of the Set.
Method strprint()
Creates a printable representation of the object.
Usage
Set$strprint(n = 2)
Arguments
- n
- numeric. Number of elements to display on either side of ellipsis when printing. 
Returns
A character string representing the object.
Method summary()
Summarises the Set.
Usage
Set$summary(n = 2)
Arguments
- n
- numeric. Number of elements to display on either side of ellipsis when printing. 
Details
The function useUnicode() can be used to determine if unicode should be used when
printing the Set. Summarised details include the Set class, properties, and traits.
Method contains()
Tests to see if x is contained in the Set.
Usage
Set$contains(x, all = FALSE, bound = NULL)
Arguments
- x
- any. Object or vector of objects to test. 
alllogical. If FALSE tests each x separately. Otherwise returns TRUE only if all x pass test.
boundignored, added for consistency.
Details
x can be of any type, including a Set itself. x should be a tuple if
checking to see if it lies within a set of dimension greater than one. To test for multiple x
at the same time, then provide these as a list.
If all = TRUE then returns TRUE if all x are contained in the Set, otherwise
returns a vector of logicals.
Returns
If all is TRUE then returns TRUE if all elements of x are contained in the Set, otherwise
FALSE. If all is FALSE then returns a vector of logicals corresponding to each individual
element of x.
The infix operator %inset% is available to test if x is an element in the Set,
see examples.
Examples
s = Set$new(elements = 1:5)
# Simplest case
s$contains(4)
8 %inset% s
# Test if multiple elements lie in the set
s$contains(4:6, all = FALSE)
s$contains(4:6, all = TRUE)
# Check if a tuple lies in a Set of higher dimension
s2 = s * s
s2$contains(Tuple$new(2,1))
c(Tuple$new(2,1), Tuple$new(1,7), 2) %inset% s2
Method equals()
Tests if two sets are equal.
Usage
Set$equals(x, all = FALSE)
Arguments
- x
- Set or vector of Sets. 
alllogical. If FALSE tests each x separately. Otherwise returns TRUE only if all x pass test.
Details
Two sets are equal if they contain the same elements. Infix operators can be used for:
Returns
If all is TRUE then returns TRUE if all x are equal to the Set, otherwise
FALSE. If all is FALSE then returns a vector of logicals corresponding to each individual
element of x.
Examples
# Equals
Set$new(1,2)$equals(Set$new(5,6))
Set$new(1,2)$equals(Interval$new(1,2))
Set$new(1,2) == Interval$new(1,2, class = "integer")
# Not equal
!Set$new(1,2)$equals(Set$new(1,2))
Set$new(1,2) != Set$new(1,5)
Method isSubset()
Test if one set is a (proper) subset of another
Usage
Set$isSubset(x, proper = FALSE, all = FALSE)
Arguments
- x
- any. Object or vector of objects to test. 
properlogical. If TRUE tests for proper subsets.
alllogical. If FALSE tests each x separately. Otherwise returns TRUE only if all x pass test.
Details
If using the method directly, and not via one of the operators then the additional boolean
argument proper can be used to specify testing of subsets or proper subsets. A Set is a proper
subset of another if it is fully contained by the other Set (i.e. not equal to) whereas a Set is a
(non-proper) subset if it is fully contained by, or equal to, the other Set.
Infix operators can be used for:
| Subset | < | 
| Proper Subset | <= | 
| Superset | > | 
Returns
If all is TRUE then returns TRUE if all x are subsets of the Set, otherwise
FALSE. If all is FALSE then returns a vector of logicals corresponding to each individual
element of x.
Examples
Set$new(1,2,3)$isSubset(Set$new(1,2), proper = TRUE)
Set$new(1,2) < Set$new(1,2,3) # proper subset
c(Set$new(1,2,3), Set$new(1)) < Set$new(1,2,3) # not proper
Set$new(1,2,3) <= Set$new(1,2,3) # proper
Method add()
Add elements to a set.
Usage
Set$add(...)
Arguments
- ...
- elements to add 
Details
$add is a wrapper around the setunion method with setunion(self, Set$new(...)).
Note a key difference is that any elements passed to ... are first converted to a Set, this
important difference is illustrated in the examples by adding an Interval to a Set.
Additionally, $add first coerces ... to $class if self is a typed-set (i.e. $class != "ANY"),
and $add checks if elements in ... live in the universe of self.
Returns
An object inheriting from Set.
Examples
Set$new(1,2)$add(3)$print()
Set$new(1,2,universe = Interval$new(1,3))$add(3)$print()
\dontrun{
# errors as 4 is not in [1,3]
Set$new(1,2,universe = Interval$new(1,3))$add(4)$print()
}
# coerced to complex
Set$new(0+1i, 2i, class = "complex")$add(4)$print()# setunion vs. add
Set$new(1,2)$add(Interval$new(5,6))$print()
Set$new(1,2) + Interval$new(5,6)
Method remove()
Remove elements from a set.
Usage
Set$remove(...)
Arguments
- ...
- elements to remove 
Details
$remove is a wrapper around the setcomplement method with
setcomplement(self, Set$new(...)). Note a key difference is that any elements passed to ...
are first converted to a Set, this important difference is illustrated in the examples by
removing an Interval from a Set.
Returns
If the complement cannot be simplified to a Set then a ComplementSet is returned
otherwise an object inheriting from Set is returned.
Examples
Set$new(1,2,3)$remove(1,2)$print()
Set$new(1,Set$new(1),2)$remove(Set$new(1))$print()
Interval$new(1,5)$remove(5)$print()
Interval$new(1,5)$remove(4)$print()
# setcomplement vs. remove
Set$new(1,2,3)$remove(Interval$new(5,7))$print()
Set$new(1,2,3) - Interval$new(5,7)
Method multiplicity()
Returns the number of times an element appears in a set,
Usage
Set$multiplicity(element = NULL)
Arguments
- element
- element or list of elements in the - set, if- NULLreturns multiplicity of all elements
 
Returns
Value, or list of values, in R+.
Examples
Set$new(1, 1, 2)$multiplicity()
Set$new(1, 1, 2)$multiplicity(1)
Set$new(1, 1, 2)$multiplicity(list(1, 2))
Tuple$new(1, 1, 2)$multiplicity(1)
Tuple$new(1, 1, 2)$multiplicity(2)
Method clone()
The objects of this class are cloneable with this method.
Usage
Set$clone(deep = FALSE)
Arguments
- deep
- Whether to make a deep clone.