Returns the cartesian product of objects inheriting from class Set
.
setproduct(..., simplify = FALSE, nest = FALSE)# S3 method for Set
*(x, y)
Sets
logical, if TRUE
returns the result in its simplest (unwrapped) form, usually a Set
otherwise a ProductSet
.
logical, if FALSE
(default) then will treat any ProductSets passed to ...
as unwrapped
Sets. See details and examples.
Either an object of class ProductSet
or an unwrapped object inheriting from 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 nest
argument. If nest == TRUE
then nest == FALSE
then nest = FALSE
is the default. The N-ary cartesian product of
The product of fuzzy and crisp sets first coerces fuzzy sets to crisp sets by finding their support.
Other operators:
powerset()
,
setcomplement()
,
setintersect()
,
setpower()
,
setsymdiff()
,
setunion()
# NOT RUN {
# 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()
# }
Run the code above in your browser using DataLab