Description Usage Arguments Details Value Author(s) See Also Examples
isSorted
and isStrictlySorted
test if a vector-like object
is sorted or strictly sorted, respectively.
isConstant
tests if a vector-like or array-like object is constant.
Currently only isConstant
methods for vectors or arrays of type
integer or double are implemented.
1 2 3 | isSorted(x)
isStrictlySorted(x)
isConstant(x)
|
x |
A vector-like object. Can also be an array-like object for
|
Vector-like objects of length 0 or 1 are always considered to be sorted, strictly sorted, and constant.
Strictly sorted and constant objects are particular cases of sorted objects.
isStrictlySorted(x)
is equivalent to
isSorted(x) && !anyDuplicated(x)
A single logical i.e. TRUE
, FALSE
or NA
.
Hervé Pagès
is.unsorted
.
duplicated
and unique
.
all.equal
.
NA
and is.finite
.
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 | ## ---------------------------------------------------------------------
## A. isSorted() and isStrictlySorted()
## ---------------------------------------------------------------------
x <- 1:10
isSorted(x) # TRUE
isSorted(-x) # FALSE
isSorted(rev(x)) # FALSE
isSorted(-rev(x)) # TRUE
isStrictlySorted(x) # TRUE
x2 <- rep(x, each=2)
isSorted(x2) # TRUE
isStrictlySorted(x2) # FALSE
## ---------------------------------------------------------------------
## B. "isConstant" METHOD FOR integer VECTORS
## ---------------------------------------------------------------------
## On a vector with no NAs:
stopifnot(isConstant(rep(-29L, 10000)))
## On a vector with NAs:
stopifnot(!isConstant(c(0L, NA, -29L)))
stopifnot(is.na(isConstant(c(-29L, -29L, NA))))
## On a vector of length <= 1:
stopifnot(isConstant(NA_integer_))
## ---------------------------------------------------------------------
## C. "isConstant" METHOD FOR numeric VECTORS
## ---------------------------------------------------------------------
## This method does its best to handle rounding errors and special
## values NA, NaN, Inf and -Inf in a way that "makes sense".
## Below we only illustrate handling of rounding errors.
## Here values in 'x' are "conceptually" the same:
x <- c(11/3,
2/3 + 4/3 + 5/3,
50 + 11/3 - 50,
7.00001 - 1000003/300000)
## However, due to machine rounding errors, they are not *strictly*
## equal:
duplicated(x)
unique(x)
## only *nearly* equal:
all.equal(x, rep(11/3, 4)) # TRUE
## 'isConstant(x)' uses 'all.equal()' internally to decide whether
## the values in 'x' are all the same or not:
stopifnot(isConstant(x))
## This is not perfect though:
isConstant((x - 11/3) * 1e8) # FALSE on Intel Pentium paltforms
# (but this is highly machine dependent!)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.