This week will shift gears and talk about writing reports using R Markdown. There are many on-line tutorials for R Markdown which will cover the basics. I’ll focus on some of the aspects of R Markdown that can really speed up your work: automating the making of tables and figures. Our work often involves making tables that process some data and then report that in tables. When the data change (which happens often), we have to remake tables (and graphs). I’ll show you how to automate this process so you are not manually remaking tables for reports.
If you want to try out the things I am showing, you will need R and RStudio or you can use this link and follow along on RStudio Cloud.
If you are using RStudio on your own computer, there are some packages that you’ll need: rmarkdown, kritr, kableExtra, flextable, ggplot2.
Build your first R Markdown file
Note, to make PDF files you will need a LaTeX installation. If you don’t have one already (if you are not sure, then you don’t), you can install tinytex. Run these lines:
install.packages('tinytex')
tinytex::install_tinytex()
Note the first time you make a PDF, tinytex will load any needed packages and it can take a long time. You’ll see a spinning wheel on the R Markdown tab.
Note, if you are using RStudio Cloud, I have installed all these things for you.
R Markdown is a format that allows you to combine text and R code. From RStudio you can output your file in many formats: html, PDF, Word, presentations. We are exploring a small slice of R Markdown.
If you have never worked with R Markdown, start with RStudio’s online lessons. That’ll get you up to speed with the basics. RStudio R Markdown lessions
When you are ready to explore more, go to this great R Markdown resource R Markdown for Scientists. The R Markdown Definitive Guide is also a good resource.
I have made a repository Rmarkdown-Tutorial with some template Rmd files for you to look at. You can clone the repos to your account and then pull into your computer.
Open up Basic.Rmd
.
At the top you see
---
title: "Basic"
author: "EE Holmes"
output: html_document
---
This is the yaml
which gives the instructions about how to process your R Markdown file. The yaml
file is sensitive to spaces. Do not add or subtract spaces. This yaml
is very simple, but the yaml
can be complex for some applications. We will only be working with simple examples.
After the yaml
is the content. To see a summary of R Markdown formating, click ‘Help’ menu and then ‘Markdown Quick Reference’.
We can create documents in different formats from this Rmd file. Click the drop-down menu next to the ‘knit’ button.
In RStudio, click the ‘Help’ tab in the top nav bar. You will see ‘Markdown Quick Reference’. That has basic markdown syntax. You can also click ‘Cheatsheets’ and there are two references sheets. Using Google, you can also find answers to any questions that the RStudio help files doesn’t answer. See also R Markdown for Scientists.
Tips:
Click the File tab, then select New File > R Markdown. This will open a template R Markdown file. You will be asked for a title and whether to have the output be html, PDF, or Word.
Repo with the following examples
Figures.Rmd
Figures_for_loop.Rmd
Table.Rmd
Table_Extras.Rmd
Math.Rmd
Extras.Rmd
Knitting in RStudio by clicking the Knit button uses rmarkdown::render()
which will automatically produce an html document that is more accessible than other ways that you might knit a R Markdown document. However you’ll need to do some special things to add alt info to figure in the html, specifically add a figure caption.
If you don’t need to have figure captions or if you are ok with the figure legend and alt text being the same, they adding alt text for figures is quite easy.
Figure caption displayed and alt text will be the same
plot(1:10)
No figure caption displayed
Add this to the top of your Rmd (or save to a css file and put that in the yaml) and the figure caption will not show up in your html.
<style>
.caption {
display:none;
}
</style>
Use html
Another approach is to have R Markdown save your figures, and then insert those with html. Then you have full control over the caption, alt text and can add the longdesc tag also.
https://r-resources.massey.ac.nz/rmarkdown/
Latex (PDF)*
Making accessible PDFs is harder in LaTeX. You might look at the tagpdf.
Another option is to have R Markdown save the figures, and use LaTeX:
\begin{figure}
\centering
\includegraphics{fig1.png}
\Description[short desc]{long description}
\caption{the caption}
\label{fig:fig1}
\end{figure}
Automatic figures and table numbering for a paper or a report is a hassle with R Markdown. Here is my solution. The Journal Article repo uses this method.
First install the usethis
R package. Then issue this command to set up your repository.
usethis::use_github_actions()
https://fromthebottomoftheheap.net/2020/04/30/rendering-your-readme-with-github-actions/