NVL {statnet.common} | R Documentation |
Convenience functions for handling NULL
objects.
Description
Convenience functions for handling NULL
objects.
Usage
NVL(...)
NVL2(test, notnull, null = NULL)
NVL3(test, notnull, null = NULL)
EVL(...)
EVL2(test, notnull, null = NULL)
EVL3(test, notnull, null = NULL)
NVL(x) <- value
EVL(x) <- value
Arguments
... , test |
expressions to be tested. |
notnull |
expression to be returned if |
null |
expression to be returned if |
x |
an object to be overwritten if |
value |
new value for |
Functions
-
NVL()
: Inspired by SQL functionNVL
, returns the first argument that is notNULL
, orNULL
if all arguments areNULL
. -
NVL2()
: Inspired by Oracle SQL functionNVL2
, returns the second argument if the first argument is notNULL
and the third argument if the first argument isNULL
. The third argument defaults toNULL
, soNVL2(a, b)
can serve as shorthand for(if(!is.null(a)) b)
. -
NVL3()
: Inspired by Oracle SQLNVL2
function andmagittr
%>%
operator, behaves asNVL2
but.
s in the second argument are substituted with the first argument. -
EVL()
: AsNVL
, but for any objects of length 0 (Empty) rather than justNULL
. Note that if no non-zero-length arguments are given,NULL
is returned. -
EVL2()
: AsNVL2
, but for any objects of length 0 (Empty) rather than justNULL
. -
EVL3()
: AsNVL3
, but for any objects of length 0 (Empty) rather than justNULL
. -
NVL(x) <- value
: Assigning toNVL
overwrites its first argument if that argument isNULL
. Note that it will always return the right-hand-side of the assignment (value
), regardless of whatx
is. -
EVL(x) <- value
: As assignment toNVL
, but for any objects of length 0 (Empty) rather than justNULL
.
Note
Whenever possible, these functions use lazy evaluation, so,
for example NVL(1, stop("Error!"))
will never evaluate the
stop
call and will not produce an error, whereas NVL(NULL, stop("Error!"))
would.
See Also
Examples
a <- NULL
a # NULL
NVL(a,0) # 0
b <- 1
b # 1
NVL(b,0) # 1
# Here, object x does not exist, but since b is not NULL, x is
# never evaluated, so the statement finishes.
NVL(b,x) # 1
# Also,
NVL(NULL,1,0) # 1
NVL(NULL,0,1) # 0
NVL(NULL,NULL,0) # 0
NVL(NULL,NULL,NULL) # NULL
NVL2(a, "not null!", "null!") # "null!"
NVL2(b, "not null!", "null!") # "not null!"
NVL3(a, "not null!", "null!") # "null!"
NVL3(b, .+1, "null!") # 2
NVL(NULL*2, 1) # numeric(0) is not NULL
EVL(NULL*2, 1) # 1
NVL(a) <- 2
a # 2
NVL(b) <- 2
b # still 1