Description Usage Arguments Details Value See Also Examples
View source: R/operation_setproduct.R
Returns the cartesian product of objects inheriting from class Set
.
1 2 3 4 | setproduct(..., simplify = FALSE, nest = FALSE)
## S3 method for class 'Set'
x * y
|
... |
Sets |
simplify |
logical, if |
nest |
logical, if |
x, y |
Set |
The cartesian product of multiple sets, the 'n-ary Cartesian product', is often implemented in programming languages as being identical to the cartesian product of two sets applied recursively. However, for sets X, Y, Z,
X × Y × Z != (X × Y) × Z
This is accommodated with the nest
argument. If nest == TRUE
then X*Y*Z == (X × Y) × Z, i.e. the cartesian
product for two sets is applied recursively. If nest == FALSE
then X*Y*Z == (X × Y × Z) and
the n-ary cartesian product is computed. As it appears the latter (n-ary product) is more common, nest = FALSE
is the default. The N-ary cartesian product of N sets, X1,...,XN, is defined as
X1 × ... × XN = {(x1,...,xN) : x1 ε X1 and ... and xN ε xN}
where (x1,...,xN) is a tuple.
The product of fuzzy and crisp sets first coerces fuzzy sets to crisp sets by finding their support.
Either an object of class ProductSet
or an unwrapped object inheriting from Set
.
Other operators:
powerset()
,
setcomplement()
,
setintersect()
,
setpower()
,
setsymdiff()
,
setunion()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | # difference between nesting
Set$new(1, 2) * Set$new(2, 3) * Set$new(4, 5)
setproduct(Set$new(1, 2) * Set$new(2, 3), Set$new(4, 5), nest = FALSE) # same as above
setproduct(Set$new(1, 2) * Set$new(2, 3), Set$new(4, 5), nest = TRUE)
unnest_set <- setproduct(Set$new(1, 2) * Set$new(2, 3), Set$new(4, 5), nest = FALSE)
nest_set <- setproduct(Set$new(1, 2) * Set$new(2, 3), Set$new(4, 5), nest = TRUE)
# note the difference when using contains
unnest_set$contains(Tuple$new(1, 3, 5))
nest_set$contains(Tuple$new(Tuple$new(1, 3), 5))
# product of two sets
Set$new(-2:4) * Set$new(2:5)
setproduct(Set$new(1, 4, "a"), Set$new("a", 6))
setproduct(Set$new(1, 4, "a"), Set$new("a", 6), simplify = TRUE)
# product of two intervals
Interval$new(1, 10) * Interval$new(5, 15)
Interval$new(1, 2, type = "()") * Interval$new(2, 3, type = "(]")
Interval$new(1, 5, class = "integer") *
Interval$new(2, 7, class = "integer")
# product of mixed set types
Set$new(1:10) * Interval$new(5, 15)
Set$new(5, 7) * Tuple$new(6, 8, 7)
FuzzySet$new(1, 0.1) * Set$new(2)
# product of FuzzySet
FuzzySet$new(1, 0.1, 2, 0.5) * Set$new(2:5)
# product of conditional sets
ConditionalSet$new(function(x, y) x >= y) *
ConditionalSet$new(function(x, y) x == y)
# product of special sets
PosReals$new() * NegReals$new()
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.