Ich konnte keine Implementierung solcher (handlicher) Typen in R finden, also habe ich meins erstellt.
Ich hoffe, dass dies nicht als Werbung angesehen wird, weil ich denke, es ist ein sehr wichtiges Merkmal, das R fehlt, und für andere Leute, die diesen Gedanken teilen, kann dies nützlich sein.
UPDATE: Jetzt als Paket auf github und auf der CRAN.
Schnellstart:
Eine optionale Variable kann auf some(object)
oder none
eingestellt werden.
Operatoren und Druck haben dasselbe Verhalten mit einem optionalen als mit seinem Basistyp.
a == 5
## [1] TRUE
a
## [1] 5
Beachten Sie, dass some(some(obj))
gleich some(obj)
und dass some(none)
gleich FALSE
.
Um eine bestehende Funktion übernimmt optionals als Argumente zu machen und auch eine optionale Rück, kann man make_opt()
verwenden:
c_opt <- make_opt(c)
c_opt(some(2), none, some(5))
## [1] 2 5
c_opt()
## [1] "None"
Bonus Teil: I eingeführte Muster auch aus funktionalen Sprachen passend , mit match_with
:
match_with(variable,
pattern , result-function,
...
Dies soll mit Magrittr
Paket verwendet werden, wenn Sie eine Syntax so nah wie die funktionelle match with
erhalten möchten:
a <- 5
match_with(a,
. %>% some(.), print,
none, function() print("Error!")
)
Meinten Sie wie S3 Methoden? – Suren