Find most retweeted tweets of the #rspatial bot

Bots that retweet #rspatial and #BioImageAnalysis tweets are working well. It is now time to add a little functionnality with the best retweeted tweet of the month, a function added to {tweetrbot} package.

Last summer, with Marion Louveaux, we built two Twitter bots that retweet #rspatial and #BioImageAnalysis tweets. That’s our way to collect news of our preferred communities. If you are interested, I presented in this blog post how to “Create [such] a twitter bot on a Raspberry Pi 3 using R” I especially created package {tweetrbot} so that my Raspberry Pi can take care of this retweet task. Today I added a small functionnality that will tweet a monthly summary.

Retrieve all tweets with #rspatial

Inpired by posts of Marion on “Analysis Twitter data with R”, I decided it was time to start using data stored by our bots. Indeed, {tweetrbot} functions store all tweets with their respective hashtag in a .rds file.
I added the current state of the #rspatial dataset inside the package.

file <- system.file("complete_tweets_rspatial.rds", package = "tweetrbot")

all_tweets <- read_rds(file)

all_tweets %>% 
  select(created_at, screen_name, text)
## # A tibble: 1,568 x 3
##    created_at          screen_name    text                                      
##    <dttm>              <chr>          <chr>                                     
##  1 2020-09-10 13:41:43 PennMUSA       "Have you seen the fire hydrant inspectio…
##  2 2020-09-10 13:40:32 StatnMap       "🌍This is not #rspatial, but can be of in…
##  3 2020-09-10 00:23:40 taraskaduk     "Hey #gischat,\nWhat's your world's bound…
##  4 2020-09-09 19:17:55 dpprdan        "#rspatial"       
##  5 2020-09-09 13:17:18 charliejhadley "How does {mapview} decide when to send i…
##  6 2020-09-09 10:24:15 MichaelDorman… "@tjukanov Nice! :-)\n\nlibrary(sf)\nx = …
##  7 2020-09-09 00:22:54 charles_gauvin "What do these buildings ecumene tell us …
##  8 2020-09-08 17:39:22 ambiogeo       "Live online course on Geographical Infor…
##  9 2020-09-08 07:56:26 maurosc3ner    "Bayesian Hierarchical Models+ICAR in #IN…
## 10 2020-09-07 15:32:40 ultrazool      "@geospacedman do you have any recommenda…
## # … with 1,558 more rows

Find the top retweeted tweet and other explorations

If you want to explore this dataset a little longer, feel free ! You can get inspiration on how to explore such a Twitter dataset with Marion’s blog posts: “Analysing Twitter data with R”, “Exploring user profiles and relationships” and “Exploring tweets content”.

In {tweetrbot}, I decided to show the daily number of contributors, the most retweeted tweets and the counts of the month. To do so, I use the top_tweets() function. Here, I set post_tweet = FALSE because I do not want my blog post to tweet this. The bot already did it.
Here are the media of the tweet:

# remotes::install_github("statnmap/tweetrbot")
output <- top_tweets(all_tweets = all_tweets, post_tweet = FALSE, top_number = 5)




And there is the text of the tweet:


Summary of August #rspatial: 1568 tweets, 420 different contributors.

Most retweeted: by @zevross.

Set the Raspi to execute the script monthly

As in “Create a twitter bot on a Raspberry Pi 3 using R”, we will use cron to tweet regularly.

Create the R script that will be run by CRON.


mkdir ~/talk_rspatial
cd ~/talk_rspatial
vim rtweet_summary.R

Fill the file with R code. This reads data gathered by get_and_store() function and create the content of the tweet. R


# Most retweets
all_tweets <- readRDS("~/talk_rspatial/complete_tweets_rspatial.rds")
# Tweet this
top_tweets(all_tweets = all_tweets, post_tweet = TRUE, top_number = 5)

Allow the Raspi to create graphics

The Raspi is a server without graphical interface. You cannot directly create graphics in R on a distant server. The Raspi is not exception. If you try, you can get the following message:

Error in X11(paste("png::", filename, sep = ""), g$width, g$height, pointsize,  : 
  unable to start device PNG
Calls: png
In addition: Warning message:
In png("test.png", width = 900, height = 400) :
  unable to open connection to X11 display ''
Execution halted

There exists a workaround. As answered by Dirk Eddelbuettel on SO, you can run R with the virtual framebuffer X11 server. You will first need to install it as follows:


sudo apt install xvfb xauth xfonts-base

And then use xvfb-run R --no-save to run R script that create graphics. Also, with {ggplot2}, you can face error like:

#> X11 font -adobe-helvetica-%s-%s---%d-------*, face 2 at size 11 could not be loaded

According to answers on askubuntu, you may need to install the following fonts:


sudo apt-get install t1-xfree86-nonfree ttf-xfree86-nonfree ttf-xfree86-nonfree-syriac xfonts-75dpi xfonts-100dpi

Set the CRON

Configure CRON to run your script once a month and tweet the top of the previous month.


sudo crontab -e
# if you want to run for a specific user
crontab -u yourusername -e 

In the crontab file that opens, you can add a command that looks like :

Minute Hour Day-of-Month Month Day-Of-Week Command

You can set the crontab to run the script the first day of each month at 10:00 (* is for all):

0 10 1 * * sudo xvfb-run $HOME/R/bin/Rscript ~/talk_rspatial/rtweet_summary.R

The tweet of the month

The #rspatial bot already tweeted the summary of last month during my tests.

A new Twitter bot in the family

When writing the first blog post “Create a twitter bot on a Raspberry Pi 3 using R”, I created @talk_rspatial that retweets #rspatial tweets and @talk_BioImg that retweets #BioImageAnalysis tweets.
This new blog post sees the birth of @talk_rstatsfr that retweets #RstatsFR tweets. I hope this will further strengthen the ties of this already active French-speaking R community. If you speak about R in French, use #rstatsFR to be retweeted by the bot. And follow the @talk_rstatsfr bot to keep updated about what happens in this R French-speaking community !

See you on Twitter ?


For attribution, please cite this work as:
Rochette Sébastien. (2020, May. 16). "Find most retweeted tweets of the #rspatial bot". Retrieved from

BibTex citation:
    author = {Rochette Sébastien},
    title = {Find most retweeted tweets of the #rspatial bot},
    url = {},
    year = {2020}
comments powered by Disqus