library("broadcast")
# maths ====
<- 1:10
x broadcaster(x) <- TRUE
<- 1:10
y broadcaster(y) <- TRUE
+ y / x
x ## [1] 2 3 4 5 6 7 8 9 10 11
## broadcaster
+ 1 # mathematically equivalent to the above, since x == y
x ## [1] 2 3 4 5 6 7 8 9 10 11
## broadcaster
+ y) / x
(x ## [1] 2 2 2 2 2 2 2 2 2 2
## broadcaster
2 * x/x # mathematically equivalent to the above, since x == y
## [1] 2 2 2 2 2 2 2 2 2 2
## broadcaster
dim(x) <- c(10, 1)
dim(y) <- c(1, 10)
+ y / x
x ## [,1] [,2] [,3] [,4] [,5] [,6] [,7]
## [1,] 2.000000 3.000000 4.000000 5.000000 6.000000 7.000000 8.000000
## [2,] 2.500000 3.000000 3.500000 4.000000 4.500000 5.000000 5.500000
## [3,] 3.333333 3.666667 4.000000 4.333333 4.666667 5.000000 5.333333
## [4,] 4.250000 4.500000 4.750000 5.000000 5.250000 5.500000 5.750000
## [5,] 5.200000 5.400000 5.600000 5.800000 6.000000 6.200000 6.400000
## [6,] 6.166667 6.333333 6.500000 6.666667 6.833333 7.000000 7.166667
## [7,] 7.142857 7.285714 7.428571 7.571429 7.714286 7.857143 8.000000
## [8,] 8.125000 8.250000 8.375000 8.500000 8.625000 8.750000 8.875000
## [9,] 9.111111 9.222222 9.333333 9.444444 9.555556 9.666667 9.777778
## [10,] 10.100000 10.200000 10.300000 10.400000 10.500000 10.600000 10.700000
## [,8] [,9] [,10]
## [1,] 9.000000 10.000000 11.000000
## [2,] 6.000000 6.500000 7.000000
## [3,] 5.666667 6.000000 6.333333
## [4,] 6.000000 6.250000 6.500000
## [5,] 6.600000 6.800000 7.000000
## [6,] 7.333333 7.500000 7.666667
## [7,] 8.142857 8.285714 8.428571
## [8,] 9.000000 9.125000 9.250000
## [9,] 9.888889 10.000000 10.111111
## [10,] 10.800000 10.900000 11.000000
## broadcaster
+ y) / x
(x ## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
## [1,] 2.000000 3.000000 4.000000 5.000000 6.000000 7.000000 8.000000 9.000000
## [2,] 1.500000 2.000000 2.500000 3.000000 3.500000 4.000000 4.500000 5.000000
## [3,] 1.333333 1.666667 2.000000 2.333333 2.666667 3.000000 3.333333 3.666667
## [4,] 1.250000 1.500000 1.750000 2.000000 2.250000 2.500000 2.750000 3.000000
## [5,] 1.200000 1.400000 1.600000 1.800000 2.000000 2.200000 2.400000 2.600000
## [6,] 1.166667 1.333333 1.500000 1.666667 1.833333 2.000000 2.166667 2.333333
## [7,] 1.142857 1.285714 1.428571 1.571429 1.714286 1.857143 2.000000 2.142857
## [8,] 1.125000 1.250000 1.375000 1.500000 1.625000 1.750000 1.875000 2.000000
## [9,] 1.111111 1.222222 1.333333 1.444444 1.555556 1.666667 1.777778 1.888889
## [10,] 1.100000 1.200000 1.300000 1.400000 1.500000 1.600000 1.700000 1.800000
## [,9] [,10]
## [1,] 10.000000 11.000000
## [2,] 5.500000 6.000000
## [3,] 4.000000 4.333333
## [4,] 3.250000 3.500000
## [5,] 2.800000 3.000000
## [6,] 2.500000 2.666667
## [7,] 2.285714 2.428571
## [8,] 2.125000 2.250000
## [9,] 2.000000 2.111111
## [10,] 1.900000 2.000000
## broadcaster
+ y) * x
(x ## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 2 3 4 5 6 7 8 9 10 11
## [2,] 6 8 10 12 14 16 18 20 22 24
## [3,] 12 15 18 21 24 27 30 33 36 39
## [4,] 20 24 28 32 36 40 44 48 52 56
## [5,] 30 35 40 45 50 55 60 65 70 75
## [6,] 42 48 54 60 66 72 78 84 90 96
## [7,] 56 63 70 77 84 91 98 105 112 119
## [8,] 72 80 88 96 104 112 120 128 136 144
## [9,] 90 99 108 117 126 135 144 153 162 171
## [10,] 110 120 130 140 150 160 170 180 190 200
## broadcaster
# relational operators ====
<- 1:10
x <- array(1:10, c(1, 10))
y broadcaster(x) <- TRUE
broadcaster(y) <- TRUE
== y
x ## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [2,] FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [3,] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [4,] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
## [5,] FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
## [6,] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
## [7,] FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
## [8,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
## [9,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
## [10,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
## broadcaster
!= y
x ## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [2,] TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [3,] TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [4,] TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE
## [5,] TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE
## [6,] TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE
## [7,] TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE
## [8,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE
## [9,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE
## [10,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE
## broadcaster
< y
x ## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [2,] FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [3,] FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [4,] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE
## [5,] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE
## [6,] FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE
## [7,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE
## [8,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE
## [9,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
## [10,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## broadcaster
> y
x ## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [2,] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [3,] TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [4,] TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [5,] TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
## [6,] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE
## [7,] TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
## [8,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE
## [9,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE
## [10,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE
## broadcaster
<= y
x ## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [2,] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [3,] FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [4,] FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [5,] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE
## [6,] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE
## [7,] FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE
## [8,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE
## [9,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE
## [10,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
## broadcaster
>= y
x ## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [2,] TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [3,] TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [4,] TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
## [5,] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE
## [6,] TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
## [7,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE
## [8,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE
## [9,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE
## [10,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## broadcaster
broadcaster
Check or Set if an Array is a Broadcaster
Description
broadcaster()
checks if an array has the "broadcaster" attribute.
broadcaster()<-
sets or un-sets the class attribute "broadcaster" on an array.
The broadcaster
class attribute exists purely to overload the arithmetic, Boolean, bit-wise, and relational infix operators, to support broadcasting.
This makes mathematical expressions with multiple variables, where precedence may be important, far more convenient.
Like in the following calculation:
x / (y + z)
See broadcast_overload for more information.
Usage
broadcaster(x)
broadcaster(x) <- value
Arguments
x
|
object to check or set. Only S3 vectors and arrays are supported, and only up to 16 dimensions. |
value
|
set to TRUE to make an array a broadcaster, or FALSE to remove the broadcaster class attribute from an array.
|
Value
For broadcaster()
:
TRUE
if an array or vector is a broadcaster, or FALSE
if it is not.
For broadcaster()<-
:
Returns nothing, but sets (if right hand side is TRUE
) or removes (if right hand side is FALSE
) the "broadcaster" class attribute.