File: test-optional_arguments.1.R

package info (click to toggle)
r-cran-lambda.r 1.2.4-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 284 kB
  • sloc: sh: 9; makefile: 2
file content (90 lines) | stat: -rw-r--r-- 1,857 bytes parent folder | download | duplicates (2)
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# vim: set filetype=R

rm(list=ls())
assert('optional_arguments_1a', {
  Prices(series, asset.class='equity', periodicity='daily') %as% {
    series@asset.class <- asset.class
    series@periodicity <- periodicity
    series
  }

  returns(x) %when% {
    x@asset.class == "equity"
    x@periodicity == "daily"
  } %as% {
    x[2:length(x)] / x[1:(length(x) - 1)] - 1
  }
  seal(Prices)
  seal(returns)

  ps <- Prices(abs(rnorm(50)))
  (attr(ps,'asset.class') == 'equity')
  (attr(ps,'periodicity') == 'daily')

  ps <- Prices(abs(rnorm(50)), 'fx')
  (attr(ps,'asset.class') == 'fx')
  (attr(ps,'periodicity') == 'daily')

  ps <- Prices(abs(rnorm(50)), periodicity='monthly')
  (attr(ps,'asset.class') == 'equity')
  (attr(ps,'periodicity') == 'monthly')

  ps <- Prices(periodicity='monthly', series=abs(rnorm(50)))
  (attr(ps,'asset.class') == 'equity')
  (attr(ps,'periodicity') == 'monthly')

  err <- tryCatch(returns(ps), error=function(x) 'error')
  (err == 'error')

  ps <- Prices(abs(rnorm(50)))
  (length(returns(ps)) == length(ps) - 1)

})


rm(list=ls())
assert('optional_arguments_1b', {
  Temperature(x, system='metric', units='celsius') %as% {
    x@system <- system
    x@units <- units
    x
  }

  freezing(x) %::% Temperature : logical
  freezing(x) %when% {
    x@system == 'metric'
    x@units == 'celsius'
  } %as% {
    if (x < 0) { TRUE }
    else { FALSE }
  }

  freezing(x) %when% {
    x@system == 'metric'
    x@units == 'kelvin'
  } %as% {
    if (x < 273) { TRUE }
    else { FALSE }
  }
  seal(Temperature)
  seal(freezing)

  ctemp <- Temperature(20)
  (! freezing(ctemp))

  ktemp <- Temperature(20, units='kelvin')
  (freezing(ktemp))
})


rm(list=ls())
assert('optional_arguments_1c', {
  avg(x, fun=mean) %as% { fun(x) }

  a <- 1:4
  a.mean <- avg(a)
  (a.mean == 2.5)

  a.med <- avg(a, median)
  (a.med == 2.5)
})