library(twitteR)
library(purrr)
library(dplyr)
library(stringr)

# You'd need to set global options with an authenticated app
setup_twitter_oauth(getOption("twitter_consumer_key"),
                    getOption("twitter_consumer_secret"),
                    getOption("twitter_access_token"),
                    getOption("twitter_access_token_secret"))
## [1] "Using direct authentication"
tweets <- searchTwitter("#7FavPackages", n = 200) %>%
  map_df(as.data.frame) %>%
  filter(!str_detect(text, "^RT ")) %>%
  arrange(created) %>%
  distinct(screenName, .keep_all = TRUE)

There were 56 in this hashtag.

library(tidytext)
library(ggplot2)
theme_set(theme_bw())

packages <- tweets %>%
  unnest_tokens(package, text, token = "regex", pattern = "[^a-zA-Z\\d\\@\\#\\.]") %>%
  filter(!str_detect(package, "[@#]"),
         !package %in% c("some")) %>%
  distinct(id, package)

packages %>%
  count(package, sort = TRUE) %>%
  filter(n > 3) %>%
  mutate(package = reorder(package, n)) %>%
  ggplot(aes(package, n)) +
  geom_bar(stat = "identity") +
  coord_flip() +
  ylab("Number of #7FavPackages mentions")

library(widyr)
library(ggraph)
library(igraph)

set.seed(2016)

pkg_counts <- packages %>%
  count(package) %>%
  filter(n > 2)

pkg_correlations <- packages %>%
  semi_join(pkg_counts) %>%
  pairwise_cor(package, id, sort = TRUE)

pkg_correlations %>%
  filter(correlation > .2) %>%
  graph_from_data_frame(vertices = pkg_counts) %>%
  ggraph(layout = "fr") +
  geom_edge_link(aes(edge_alpha = correlation)) +
  geom_node_point(aes(size = n), color = "lightblue") +
  theme_void() +
  geom_node_text(aes(label = name), repel = TRUE) +
  theme(legend.position = "none")