Informatively display a maximum number of elements
plu_more(x, max = 5, type = TRUE, fn = NULL, ..., det = "more")
more(x, max = 5, type = TRUE, fn = NULL, ..., det = "more")
A vector or list.
The maximum number of items to list.
Additional arguments are replaced with "n more".
Defaults to 5
.
If max
if Inf
, NULL
, FALSE
, or NA
, all elements are
preserved.
If a character, type
is passed to ral()
and pasted after the
number of elements.
If TRUE
, the default, the first class of x
is used as the type.
If x
is a list with different classes of element, "element" is used
in place of a class name.
If FALSE
or NA
, nothing is pasted after the number of elements.
A function to apply to the number of additional elements.
Default to NULL
, which applies no function.
Additional arguments to fn
.
A determiner to place before the number of additional elements. Defaults to "more".
If x
is a vector, a character vector with a length of max
+ 1
or less.
If x
is a list, a list with max + 1
or fewer elements.
plu::more(letters)
#> [1] "a" "b" "c"
#> [4] "d" "e" "21 more characters"
# Setting `max`
plu::more(letters, max = 10)
#> [1] "a" "b" "c"
#> [4] "d" "e" "f"
#> [7] "g" "h" "i"
#> [10] "j" "16 more characters"
plu::more(letters, max = 27)
#> [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
#> [20] "t" "u" "v" "w" "x" "y" "z"
# If `max` is Inf or NULL, all elements will be preserved
plu::more(letters, max = Inf)
#> [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
#> [20] "t" "u" "v" "w" "x" "y" "z"
# If `max` is less than one, no elements will be preserved
plu::more(letters, max = 0)
#> [1] "26 characters"
# Setting element type
plu::more(letters, type = "letter")
#> [1] "a" "b" "c" "d"
#> [5] "e" "21 more letters"
# If `type` is FALSE or NULL, no type will be included
plu::more(letters, type = FALSE)
#> [1] "a" "b" "c" "d" "e" "21 more"
# Automatically generating type
plu::more(1:100)
#> [1] "1" "2" "3" "4"
#> [5] "5" "95 more integers"
plu::more(as.list(1:100))
#> [[1]]
#> [1] 1
#>
#> [[2]]
#> [1] 2
#>
#> [[3]]
#> [1] 3
#>
#> [[4]]
#> [1] 4
#>
#> [[5]]
#> [1] 5
#>
#> [[6]]
#> [1] "95 more integers"
#>
plu::more(c(as.list(1:2), as.list(letters)))
#> [[1]]
#> [1] 1
#>
#> [[2]]
#> [1] 2
#>
#> [[3]]
#> [1] "a"
#>
#> [[4]]
#> [1] "b"
#>
#> [[5]]
#> [1] "c"
#>
#> [[6]]
#> [1] "23 more elements"
#>
plu::more(fracture::fracture((1:9) / (9:1)))
#> [1] "1/9" "1/4" "3/7"
#> [4] "2/3" "1/1" "4 more characters"
# Setting a determiner other than "more"
plu::more(letters, det = "other")
#> [1] "a" "b" "c"
#> [4] "d" "e" "21 other characters"
# Applying a function to the number
plu::more(letters, fn = nombre::cardinal)
#> [1] "a" "b"
#> [3] "c" "d"
#> [5] "e" "twenty-one more characters"
# Automatic pluralization of type
fish <- c("sea bass", "crucian carp", "dace", "coelecanth")
plu::more(fish, max = 3, type = "fish")
#> [1] "sea bass" "crucian carp" "dace" "1 more fish"
plu::more(fish, max = 2, type = "fish")
#> [1] "sea bass" "crucian carp" "2 more fish"
teeth <- c("incisor", "canine", "molar", "wisdom tooth")
plu::more(teeth, max = 3, type = "tooth")
#> [1] "incisor" "canine" "molar" "1 more tooth"
plu::more(teeth, max = 2, type = "tooth")
#> [1] "incisor" "canine" "2 more teeth"
cacti <- c("saguaro", "prickly pear", "barrel", "star")
plu::more(cacti, max = 3, type = "cactus")
#> [1] "saguaro" "prickly pear" "barrel" "1 more cactus"
plu::more(cacti, max = 2, type = "cactus")
#> [1] "saguaro" "prickly pear" "2 more cacti"
# Using plu_more() within a function
verbose_sqrt <- function(x) {
if (any(x < 0)) {
problems <- x[x < 0]
prob_msg <- crayon::silver(encodeString(problems, quote = "`"))
warning(
"Square root is undefined for ",
and::and(plu::more(prob_msg, fn = crayon::silver, type = "input.")),
call. = FALSE
)
}
sqrt(x)
}
ints <- round(runif(20, -10, 10))
verbose_sqrt(ints)
#> Warning: Square root is undefined for `-2`, `-1`, `-2`, `-5`, `-2`, and 7 more inputs.
#> Warning: NaNs produced
#> [1] NaN NaN NaN NaN NaN NaN NaN NaN
#> [9] NaN 3.000000 1.732051 2.828427 1.000000 NaN 2.828427 NaN
#> [17] NaN 1.414214 1.732051 1.000000