# Scan Rmd files to identify figures that are saved by chunks
RmdFileFigureTbl <-
dir(".",pattern = ".Rmd$") %>% # list .Rmd files
setNames(.,.) %>%
lapply(function(filename){
x <- readLines(filename)
x <- x[grepl("```{r",fixed = T,x)] # get chunk headers
x <- x[grepl("fig.path",fixed = T,x)] # with figure file output
tibble( name = sub("^.*\\{r ([^,]+).*$","\\1",x)) # extract chunk name
}) %>%
bind_rows(.id="Rmd_file") %>%
select(name,Rmd_file)
# Create list of figures with links
tibble(filename=dir("Figures",pattern=".pdf$|.png$",recursive=T)) %>%
mutate( ext = sub(".*(...)$","\\1",filename), name = sub("-1$","", sub("....$","",filename))) %>%
left_join(RmdFileFigureTbl,by="name") %>%
group_by(name) %>%
summarise( figureLinks = paste0("[[",ext,"]](Figures/",filename,")",collapse = ""),
RmdLinks = ifelse(is.na(Rmd_file[1]),"",paste0(" (source: [",Rmd_file[1],"]",
"(",sub(".Rmd",".html",Rmd_file[1]),"))"))) %>%
# correctly sort figures by number:
mutate(figNr = map_dbl(regmatches(name, gregexpr("[[:digit:]]+", name)), ~ as.numeric(.x[1]))) %>%
arrange( sub("[0-9].*$","",name),figNr,name) %>%
with( cat(paste0("* ",name," ",figureLinks,RmdLinks),sep="\n"))
## `summarise()` ungrouping output (override with `.groups` argument)