Created
March 24, 2019 10:57
-
-
Save GuillaumePressiat/f2d4ac48b12920ef501a00abf5a2fb99 to your computer and use it in GitHub Desktop.
Strength of a Lennon song exposed with R function glue::glue
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
library(stringfix) | |
library(magrittr) | |
one <- c('love', 'is', 'real') | |
(one %c% ' ') %,% (rev(one) %c% ' ') | |
love_verse <- function(w1, w2, w3){ | |
glue::glue( | |
"Love is {b}, {b} is love | |
Love is {y}, {y} love | |
Love is {u} to be loved", | |
b = w1, y = w2, u = w3) | |
} | |
love_verse('real', 'feeling', 'wanting') | |
love_verse('touch', 'reaching', 'asking') | |
love_verse('free', 'living', 'needing') | |
list(list(w1 = 'real', w2 = 'feeling', w3 = 'wanting'), | |
list(w1 = 'touch', w2 = 'reaching', w3 = 'asking' ), | |
list(w1 = 'free', w2 = 'living', w3 = 'needing')) %>% | |
purrr::map(function(x)do.call(love_verse, x)) | |
@GuillaumePressiat An alternative implementation, taking advantage of the fact glue()
and glue_data()
are vectorized.
library(magrittr)
tibble::tribble(
~a, ~b, ~c,
"real", "feeling", "wanting",
"touch", "reaching", "asking",
"free", "living", "needing"
) %>%
glue::glue_data(
"Love is {a}, {a} is love
Love is {b}, {b} love
Love is {c} to be loved",
) %>%
glue::glue_collapse("\n\n")
#> Love is real, real is love
#> Love is feeling, feeling love
#> Love is wanting to be loved
#>
#> Love is touch, touch is love
#> Love is reaching, reaching love
#> Love is asking to be loved
#>
#> Love is free, free is love
#> Love is living, living love
#> Love is needing to be loved
Created on 2019-03-24 by the reprex package (v0.2.1)
@jimhester Thank you !
This is nice indeed. Tidy way.
In fact I use glue_data
often but have not thinked theses words will fit in a 3*3 tibble/tribble for using that way !
I will update blogpost with this.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Code for this post: https://guillaumepressiat.github.io//blog/2019/03/love