knitr::opts_chunk$set( comment = "##>", tidy = FALSE, error = FALSE)
The prettyunits
package formats quantities in human readable form.
You can install the package from CRAN:
install.packages("prettyunits")
If you need the development version, install it from GitHub:
pak::pak("r-lib/prettyunits")
library(prettyunits) library(magrittr)
pretty_bytes
formats number of bytes in a human readable way:
pretty_bytes(1337) pretty_bytes(133337) pretty_bytes(13333337) pretty_bytes(1333333337) pretty_bytes(133333333337)
Here is a simple function that emulates the Unix ls
command, with
nicely formatted file sizes:
uls <- function(path = ".") { files <- dir(path) info <- files %>% lapply(file.info) %>% do.call(what = rbind) info$size <- pretty_bytes(info$size) df <- data.frame(d = ifelse(info$isdir, "d", " "), mode = as.character(info$mode), user = info$uname, group = info$grname, size = ifelse(info$isdir, "", info$size), modified = info$mtime, name = files) print(df, row.names = FALSE) } uls()
pretty_num
formats number related to linear quantities in a human readable way:
pretty_num(1337) pretty_num(-133337) pretty_num(1333.37e-9)
Be aware that the result is wrong in case of surface or volumes, and for any non-linear quantity.
Here is a simple example of how to prettify a entire tibble
library(tidyverse) tdf <- tribble( ~name, ~`size in m`, ~`speed in m/s`, "land snail", 0.075, 0.001, "photon", NA, 299792458, "African plate", 10546330, 0.000000000681) tdf %>% mutate(across(where(is.numeric), pretty_num))
pretty_ms
formats a time interval given in milliseconds. pretty_sec
does
the same for seconds, and pretty_dt
for difftime
objects. The optional
compact
argument turns on a compact, approximate format.
pretty_ms(c(1337, 13370, 133700, 1337000, 1337000000)) pretty_ms(c(1337, 13370, 133700, 1337000, 1337000000), compact = TRUE) pretty_sec(c(1337, 13370, 133700, 1337000, 13370000)) pretty_sec(c(1337, 13370, 133700, 1337000, 13370000), compact = TRUE)
vague_dt
and time_ago
formats time intervals using a vague format,
omitting smaller units. They both have three formats: default
, short
and terse
.
vague_dt
takes a difftime
object, and time_ago
works relatively to the
specified date.
vague_dt(format = "short", as.difftime(30, units = "secs")) vague_dt(format = "short", as.difftime(14, units = "mins")) vague_dt(format = "short", as.difftime(5, units = "hours")) vague_dt(format = "short", as.difftime(25, units = "hours")) vague_dt(format = "short", as.difftime(5, units = "days"))
now <- Sys.time() time_ago(now) time_ago(now - as.difftime(30, units = "secs")) time_ago(now - as.difftime(14, units = "mins")) time_ago(now - as.difftime(5, units = "hours")) time_ago(now - as.difftime(25, units = "hours"))
pretty_round()
and pretty_signif()
preserve trailing zeros.
pretty_round(1, digits=6) pretty_signif(c(99, 0.9999), digits=3)
pretty_p_value()
rounds small p-values to indicate less than significance
level for small values.
pretty_p_value(c(0.05, 0.0000001, NA))
pretty_color
converts colors from other representations to human-readable
names.
pretty_color("black") pretty_color("#123456")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.