The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Build Status

Each function in concatenate returns a comma-separated string. (A length-one character vector.) They can be used to construct human-friendly messages whose elements aren’t known in advance, like calls to message, warning or stop, from clean code.

Basics

The workhorse function in concatenate is cc.

cc("one fish", "two fish")
#> [1] "one fish, two fish"

Its wrappers cc_or and cc_and insert “or” and “and” between the last two elements of the input.

cc_and("this", "that", "the other")
#> [1] "this, that and the other"
cc_or("one way", "another")
#> [1] "one way or another"

cn and its derivatives combine these functions with sprintf-like substitution and the grammatical number awareness of ngettext.

x <- unique(iris$Species)
cn_and(x, "a single species: %c", "%n unique species: %c")
#> [1] "3 unique species: setosa, versicolor and virginica"

There are row-wise data.frame methods for the cn functions.

singular <- "%n row: %c"
plural <- "%n rows whose values are %c"
cn(chickwts[1, ], singular, plural)
#> [1] "1 row: 179, horsebean"
cn_and(chickwts[1:3, 1, drop = FALSE], singular, plural)
#> [1] "3 rows whose values are 179, 160 and 136"

The cc functions are also available as binary infix operators.

x <- "important value"
x %+% "!"
#> [1] "important value!"

Install

devtools::install_github('jamesdunham/concatenate')

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.