View source: R/misc.utilities.R
| NVL | R Documentation |
NULL objects.Convenience functions for handling NULL objects.
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
..., 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.
EVL(): As NVL, but for any objects of length 0 (Empty) rather than just NULL. Note that if no non-zero-length arguments are given, NULL is returned.
EVL2(): As NVL2, but for any objects of length 0 (Empty) rather than just NULL.
EVL3(): As NVL3, but for any objects of length 0 (Empty) rather than just NULL.
NVL(x) <- value: 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.
EVL(x) <- value: As assignment to NVL, but for any objects of length 0 (Empty) rather than just NULL.
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.
NULL, is.null, if
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
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.