File: diff2.R

package info (click to toggle)
r-cran-matrixstats 1.5.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,104 kB
  • sloc: ansic: 7,300; sh: 11; makefile: 2
file content (39 lines) | stat: -rw-r--r-- 1,017 bytes parent folder | download
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
36
37
38
39
library("matrixStats")

diff2_R <- function(..., useNames = TRUE){
  res <- diff(...)
  if (!useNames) names(res) <- NULL
  res
}

set.seed(0x42)

for (mode in c("integer", "double")) {
  x <- rnorm(10, sd = 5)
  storage.mode(x) <- mode
  str(x)

  for (has_na in c(FALSE, TRUE)) {
    for (setNames in c(TRUE, FALSE)) {
      for (useNames in c(TRUE, FALSE)) {
        if (has_na) {
          x[sample(1:10, size = 3)] <- NA
        }
        if (setNames) {
          names(x) <- LETTERS[1:10]
        }
        for (l in 1:3) {
          for (d in 1:4) {
            cat(sprintf("%s: NAs = %s, lag = %d, differences = %d, setNames = %d, useNames = %d\n",
                        mode, has_na, l, d, setNames, useNames))
            y0 <- diff2_R(x, lag = l, differences = d, useNames = useNames)
            str(y0)
            y1 <- diff2(x, lag = l, differences = d, useNames = useNames)
            str(y1)
            stopifnot(identical(y1, y0))
          }
        }  
      }
    }
  } # for (has_na ...)
}