Nothing
knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
The following examples demonstrate using chars
objects inside functions, no
longer needing to spell out strsplit(x, "")[[1]]
every time.
library(charcuterie)
Which letters are vowels (aeiou)?
vowels <- function(word) { ch <- chars(word) setNames(ch %in% chars("aeiou"), ch) } vowels("string") vowels("banana")
Since %in%
is vectorised, it works nicely with a chars
object
banana <- chars("banana") banana[which(banana %in% chars("aeiou"))] onomatopoeia <- chars("onomatopoeia") onomatopoeia[which(onomatopoeia %in% chars("aeiou"))]
"Strings" are finally iterable
for (x in chars("ABC")) { print(paste("Appendix", x)) }
Is a word a palindrome (spelled the same forwards and backwards)?
palindrome <- function(a, ignore_spaces = FALSE) { a <- chars(a) if (ignore_spaces) a <- except(a, " ") all(rev(a) == a) } palindrome("palindrome") palindrome("racecar") palindrome("never odd or even", ignore_spaces = TRUE) palindrome("go hang a salami im a lasagna hog", ignore_spaces = TRUE)
Are two words just rearrangements of their letters?
anagram <- function(a, b) { is_anagram <- function(a, b) { length(a) == length(b) && all(sort(a) == sort(b)) } sapply(candidates, \(x) is_anagram(chars(a), chars(x))) } target <- "stressed" candidates <- c("started", "desserts", "rested") anagram(target, candidates)
Make every second letter uppercase
spongebob <- function(phrase) { x <- chars(phrase) odds <- seq(1, length(x), 2) x[odds] <- toupper(x[odds]) string(x) } spongebob("you can't do anything useful with this package")
knitr::include_graphics("spongebob.jpg")
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.