NVL {statnet.common} | R Documentation |
NULL
objects.Convenience functions for handling NULL
objects.
NVL(...) NVL2(test, notnull, null = NULL) NVL3(test, notnull, null = NULL) NVL(x) <- value
..., 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 |
NVL
: Inspired by SQL function NVL
, returns the first argument
that is not NULL
, or NULL
if all arguments are
NULL
.
NVL2
: Inspired by Oracle SQL function NVL2
, returns the second argument
if the first argument is not NULL
and the third argument if the
first argument is NULL
. The third argument defaults to NULL
, so
NVL2(a, b)
can serve as shorthand for (if(!is.null(a)) b)
.
NVL3
: Inspired by Oracle SQL NVL2
function and magittr
%>%
operator, behaves as NVL2
but .
s in the second argument are
substituted with the first argument.
NVL<-
: Assigning to NVL
overwrites its first argument if that argument
is NULL
. Note that it will always return the right-hand-side
of the assignment (value
), regardless of what x
is.
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.
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(a) <- 2 a # 2 NVL(b) <- 2 b # still 1