Skip to contents

EXPERIMENTAL!!!

NaArray objects support all operations from the Compare group. See ?S4groupGeneric in the methods package for more information about the Compare group generic.

Details

Three forms of 'Compare' operations involving NaArray objects are supported:

  1. Between an NaArray object naa and a single value y:

        naa op y
        y op naa
  2. Between two NaArray objects naa1 and naa2 of same dimensions (a.k.a. conformable arrays):

        naa1 op naa2
  3. Between an NaArray object naa and an SVT_SparseArray object svt of same dimensions (a.k.a. conformable arrays):

        naa op svt
        svt op naa

Value

An NaArray object of type() "logical" and same dimensions as the input object(s).

See also

Examples

nam1 <- NaArray(dim=c(15, 6), type="double")
nam1[c(2, 6, 12:17, 22:33, 55, 59:62, 90)] <- runif(26)
nam1
#> <15 x 6 NaMatrix> of type "double" [nnacount=26 (29%)]:
#>             [,1]       [,2]       [,3]       [,4]       [,5]       [,6]
#>  [1,]         NA 0.10399823 0.03408173         NA 0.08276945         NA
#>  [2,] 0.03000375 0.96320620 0.74878915         NA 0.68174249         NA
#>  [3,]         NA         NA 0.91918598         NA         NA         NA
#>  [4,]         NA         NA         NA         NA         NA         NA
#>  [5,]         NA         NA         NA         NA         NA         NA
#>   ...          .          .          .          .          .          .
#> [11,]         NA  0.4882011         NA         NA         NA         NA
#> [12,]  0.3118320  0.4212521         NA         NA         NA         NA
#> [13,]  0.4863615  0.2293495         NA         NA         NA         NA
#> [14,]  0.9448024  0.7620652         NA  0.6785628         NA         NA
#> [15,]  0.2926374  0.2642333         NA  0.7569872         NA  0.1812089

nam1 >= 0.2
#> <15 x 6 NaMatrix> of type "logical" [nnacount=26 (29%)]:
#>        [,1]  [,2]  [,3]  [,4]  [,5]  [,6]
#>  [1,]    NA FALSE FALSE    NA FALSE    NA
#>  [2,] FALSE  TRUE  TRUE    NA  TRUE    NA
#>  [3,]    NA    NA  TRUE    NA    NA    NA
#>  [4,]    NA    NA    NA    NA    NA    NA
#>  [5,]    NA    NA    NA    NA    NA    NA
#>   ...     .     .     .     .     .     .
#> [11,]    NA  TRUE    NA    NA    NA    NA
#> [12,]  TRUE  TRUE    NA    NA    NA    NA
#> [13,]  TRUE  TRUE    NA    NA    NA    NA
#> [14,]  TRUE  TRUE    NA  TRUE    NA    NA
#> [15,]  TRUE  TRUE    NA  TRUE    NA FALSE
nam1 != 0
#> <15 x 6 NaMatrix> of type "logical" [nnacount=26 (29%)]:
#>       [,1] [,2] [,3] [,4] [,5] [,6]
#>  [1,]   NA TRUE TRUE   NA TRUE   NA
#>  [2,] TRUE TRUE TRUE   NA TRUE   NA
#>  [3,]   NA   NA TRUE   NA   NA   NA
#>  [4,]   NA   NA   NA   NA   NA   NA
#>  [5,]   NA   NA   NA   NA   NA   NA
#>   ...    .    .    .    .    .    .
#> [11,]   NA TRUE   NA   NA   NA   NA
#> [12,] TRUE TRUE   NA   NA   NA   NA
#> [13,] TRUE TRUE   NA   NA   NA   NA
#> [14,] TRUE TRUE   NA TRUE   NA   NA
#> [15,] TRUE TRUE   NA TRUE   NA TRUE

nam2 <- NaArray(dim=dim(nam1), type="integer")
nam2[cbind(1:15, 2)] <- 100:114
nam2[cbind(1:15, 5)] <- -(114:100)
nam2
#> <15 x 6 NaMatrix> of type "integer" [nnacount=30 (33%)]:
#>       [,1] [,2] [,3] [,4] [,5] [,6]
#>  [1,]   NA  100   NA   NA -114   NA
#>  [2,]   NA  101   NA   NA -113   NA
#>  [3,]   NA  102   NA   NA -112   NA
#>  [4,]   NA  103   NA   NA -111   NA
#>  [5,]   NA  104   NA   NA -110   NA
#>   ...    .    .    .    .    .    .
#> [11,]   NA  110   NA   NA -104   NA
#> [12,]   NA  111   NA   NA -103   NA
#> [13,]   NA  112   NA   NA -102   NA
#> [14,]   NA  113   NA   NA -101   NA
#> [15,]   NA  114   NA   NA -100   NA

nam1 < nam2
#> <15 x 6 NaMatrix> of type "logical" [nnacount=13 (14%)]:
#>        [,1]  [,2]  [,3]  [,4]  [,5]  [,6]
#>  [1,]    NA  TRUE    NA    NA FALSE    NA
#>  [2,]    NA  TRUE    NA    NA FALSE    NA
#>  [3,]    NA    NA    NA    NA    NA    NA
#>  [4,]    NA    NA    NA    NA    NA    NA
#>  [5,]    NA    NA    NA    NA    NA    NA
#>   ...     .     .     .     .     .     .
#> [11,]    NA  TRUE    NA    NA    NA    NA
#> [12,]    NA  TRUE    NA    NA    NA    NA
#> [13,]    NA  TRUE    NA    NA    NA    NA
#> [14,]    NA  TRUE    NA    NA    NA    NA
#> [15,]    NA  TRUE    NA    NA    NA    NA

## Sanity checks:
m1 <- as.matrix(nam1)
m2 <- as.matrix(nam2)
stopifnot(
  identical(as.matrix(nam1 >= 0.2), m1 >= 0.2),
  identical(as.matrix(nam1 != 0), m1 != 0),
  identical(as.matrix(nam1 < nam2), m1 < m2)
)