My #Best9of2018 tweets

December 27, 2018

(This article was first published on Posts on Maëlle's R blog, and kindly contributed to R-bloggers)

As 2018 nears its end, it’s time for me to look back on my R/Twitter
year with the same simple method as last
: let me identify and webshoot my 9 best
tweets of 2018!

Downloading and opening my Twitter data

Like in 2017 I tweeted too much and therefore was unable to rely on
rtweet::get_timeline() (or rtweet::get_my_timeline()) to download my
tweets so I exported data via the Tweets tab of Last year, I downloaded one file per
quarter but somehow had to download one per month this time. It was
monotonous but not horrible.


dir("data", full.names = TRUE) %>%
  purrr::map_df(readr::read_csv) %>%
  unique() -> my_tweets

4196 tweets!

Getting the top 9 tweets

Similarly to my 2017 post, I chose the number of likes as criterion to
define my best tweets.

my_tweets <- dplyr::arrange(my_tweets, - likes)
my_tweets <- janitor::clean_names(my_tweets)

knitr::kable(my_tweets[1:9, "likes"])
best9 <- my_tweets$tweet_permalink[1:9]

The table above shows that my best tweets were not extremely popular.

Webshooting and combining the tweets

My 2017 blog post inspired Bob Rudis to contribute a tweet_shot()
function to rtweet, relying on the webshot package, so that’s what I

shot <- function(permalink){
  rtweet::tweet_shot(permalink) %>%
    magick::image_crop(magick::geometry_area(width = 517,
                                             height = 517,
                       y_off = 88)) %>%
    magick::image_border("salmon", "20x20")

images <- purrr::map(as.character(best9),

I improved the collage code with two tweaks:

  • I created rows then columns instead of the other way round, because
    that’s what Instagram does. I did not pay attention to this last
    year but Andrew Caines told me this in a comment.

  • I did not save the intermediary images to disk. I’ve upped my
    magick game!

make_row <- function(i, images){
  images[((i-1)*3+1):((i-1)*3+3)] %>%
    magick::image_join() %>%

purrr::map(1:3, make_row,
           images = images) %>%
  magick::image_join() %>%
  magick::image_append(stack = TRUE) %>%
  magick::image_border("salmon", "20x20")

best 9 of 2018

Worth noting from my R year are, according to these tweets,

What about your R year, on Twitter and elsewhere? Have a good last days
of 2018, and a happy 2019!

To leave a comment for the author, please follow the link and comment on their blog: Posts on Maëlle's R blog. offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...

If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Comments are closed.

Search R-bloggers


Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)