I’ve been using blogdown for a while now and have basically been randomly selecting tags as I write each post without putting too much thought into it. Tonight I was searching for a method to list all of the tags I’ve used across my blogdown posts and I rolled up the following solution.
library(tidyverse)
blogdown_content_path <- here::here("content")
# Scan yaml of all posts (run at root of blogdown project)
blogdown:::scan_yaml(blogdown_content_path) %>%
# Pull out the tags
map("tags") %>%
# Drop results without any tags
discard(is.null) %>%
# Turn into a nice tibble (can stop here if you want tags + files)
map_df(~ tibble::data_frame(tag = .), .id = "file") %>%
# Summarize (group and count)
group_by(tag) %>%
count(sort = TRUE) %>%
# Starts with uppercase?
mutate(starts_upper = substr(tag, 1, 1) %in% LETTERS)
## # A tibble: 50 x 3
## # Groups: tag [50]
## tag n starts_upper
## <chr> <int> <lgl>
## 1 R 19 TRUE
## 2 Data Analysis 6 TRUE
## 3 Markdown 6 TRUE
## 4 Research 6 TRUE
## 5 Visualization 6 TRUE
## 6 R Package 5 TRUE
## 7 Scripts 5 TRUE
## 8 pandoc 4 FALSE
## 9 ggplot2 3 FALSE
## 10 INFORMS 3 TRUE
## # ... with 40 more rows
Note that you can stop at the map_df()
line and get a list of tags with the associated files in which they appear.
At this point, I decided I’d write this quick post to remind future me when I decide to actually standardize my tags. That’s when I realized that the “New Post” addin in blogdown lists all of the previously used tags. A little digging in the addin script (inst/scripts/new_post.R) revealed the function behind the dropdown menu.
blogdown:::collect_yaml(dir = blogdown_content_path)
## $categories
## [1] "Blog" "Music" "Photos" "Project"
##
## $tags
## [1] "Academia" "Addin"
## [3] "Ambient Assisted Living" "Ambient Intelligence"
## [5] "Apps" "blogdown"
## [7] "Data Analysis" "Differential Equations"
## [9] "Dynamic Systems" "emoji"
## [11] "Gadget" "Gerontechnology"
## [13] "ggplot2" "git"
## [15] "Google Trends" "Gun Control"
## [17] "Healthcare" "IIE"
## [19] "INFORMS" "Interesting Articles"
## [21] "ISERC" "LaTeX"
## [23] "Markdown" "Math"
## [25] "MySQL" "Note to Self"
## [27] "pandoc" "Personal Data"
## [29] "Predictive Analytics" "Presentation"
## [31] "Productivity" "Quotes"
## [33] "R" "R Markdown"
## [35] "R Package" "Research"
## [37] "RStudio" "Scripts"
## [39] "Shiny" "Smart Home"
## [41] "SQL" "Status"
## [43] "Test Theory" "Tips"
## [45] "Tricks" "Tutorials"
## [47] "Visualization" "Workflow"
## [49] "Writing" "xaringan"
Finally, when you want to open the files containing a particular tag, you can use blogdown’s find_tags()
function with the option open = TRUE
.
blogdown::find_tags("Note to Self", open = TRUE)