Rmarkdown

From 太極
Jump to navigation Jump to search

Markdown language

According to wikipedia:

Markdown is a lightweight markup language, originally created by John Gruber with substantial contributions from Aaron Swartz, allowing people “to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML)”.

  • Markup is a general term for content formatting - such as HTML - but markdown is a library that generates HTML markup.
  • Convert mediawiki to markdown using online conversion tool from pandoc.
 {r eval=TRUE, echo=FALSE, message=FALSE}


Github markdown Readme.md

Rmarkdown

HTML5 slides examples

Software requirement

Slide #22 gives an instruction to create

  • regular html file by using RStudio -> Knit HTML button
  • HTML5 slides by using pandoc from command line.

Files:

  • Rcmd source: 009-slides.Rmd Note that IE 8 was not supported by github. For IE 9, be sure to turn off "Compatibility View".
  • markdown output: 009-slides.md
  • HTML output: 009-slides.html

We can create Rcmd source in Rstudio by File -> New -> R Markdown.

There are 4 ways to produce slides with pandoc

  • S5
  • DZSlides
  • Slidy
  • Slideous

Use the markdown file (md) and convert it with pandoc

pandoc -s -S -i -t dzslides --mathjax html5_slides.md -o html5_slides.html

If we are comfortable with HTML and CSS code, open the html file (generated by pandoc) and modify the CSS style at will.

Built-in examples from rmarkdown

# This is done on my ODroid xu4 running Ubuntu Mate 15.10 (Wily)
# I used sudo apt-get install pandoc in shell
# and install.packages("rmarkdown") in R 3.2.3

library(rmarkdown)
rmarkdown::render("~/R/armv7l-unknown-linux-gnueabihf-library/3.2/rmarkdown/rmarkdown/templates/html_vignette/skeleton/skeleton.Rmd")
# the output <skeleton.html> is located under the same dir as <skeleton.Rmd>

Note that the image files in the html are embedded Base64 images in the html file. See

Templates

Knit button

  • It calls rmarkdown::render()
  • R Markdown = knitr + Pandoc
  • rmarkdown::render () = knitr::knit() + a system() call to pandoc

Pandoc's Markdown

Originally Pandoc is for html.

Extensions

  • YAML metadata
  • Latex Math
  • syntax highlight
  • embed raw HTML/Latex (raw HTML only works for HTML output and raw Latex only for Latex/pdf output)
  • tables
  • footnotes
  • citations

Types of output documents

  • Latex/pdf, HTML, Word
  • beamer, ioslides, Slidy, reval.js
  • Ebooks
  • ...

Some examples:

pandoc test.md -o test.html
pandoc test.md -s --mathjax -o test.html
pandoc test.md -o test.docx
pandoc test.md -o test.pdf
pandoc test.md --latex-engine=xlelatex -o test.pdf
pandoc test.md -o test.epb

Check out ?rmarkdown::pandoc_convert()/

When you click the Knit button in RStudio, you will see the actual command that is executed.

Global options

Suppose I want to create a simple markdown only documentation without worrying about executing code, instead of adding eval = FALSE to each code chunks, I can insert the following between YAML header and the content. Even bash chunks will not be executed.

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, eval = FALSE)
```

Examples/gallery

Some examples of creating papers (with references) based on knitr can be found on the Papers and reports section of the knitr website.

Read the docs Sphinx theme and journal article formats

http://blog.rstudio.org/2016/03/21/r-markdown-custom-formats/

rmarkdown news

Useful tricks when including images in Rmarkdown documents

http://blog.revolutionanalytics.com/2017/06/rmarkdown-tricks.html

Converting Rmarkdown to F1000Research LaTeX Format

BiocWorkflowTools package and paper

Internal links

If my section header is written as "## my section Header". Then I can link to it by using "[linked phrase](#my-section-header)".

Note here

  • Use one number sign (#) even it is a subsection
  • Use the hyphen sign to connect the space character
  • Use lower cases even the header contains capital letters

Colored text

Blue text . See How to apply color in Markdown?.

icons for rmarkdown

https://ropensci.org/technotes/2018/05/15/icon/

Reproducible data analysis

Interactive document: Shiny

See R Markdown Cheat Sheet.

When I follow the direction to add the code to the end of this Rmd file, I see

  • I can't run "Build" anymore. An error will come out: Error in numericInput("n", "How many cars?", 5) : could not find function "numericInput".
  • After I click "Run Document", the Rmd file will be displayed in either RStudio or a regular browser using R's built-in web server (http://127.0.0.1:YYYY/XXX.Rmd).

Automatic document production with R

https://itsalocke.com/improving-automatic-document-production-with-r/

Documents with logos, watermarks, and corporate styles

http://ellisp.github.io/blog/2017/09/09/rmarkdown

rticles and pinp for articles

Gmisc: create Table 1 used in medical articles

https://cran.r-project.org/web/packages/Gmisc/index.html

Tips

Cache

  • Cache not work
  • Examples
    > system.time(rmarkdown::render("~/Downloads/tmp.Rmd")) # first time
    ...
    Output created: tmp.html
       user  system elapsed 
      3.123   0.108   5.426 
    # It will create two directories: tmp_files, tmp_cache
    
    > system.time(rmarkdown::render("~/Downloads/tmp.Rmd")) # Second time
    ...
    Output created: tmp.html
       user  system elapsed 
      0.239   0.019   0.317

RStudio

RStudio is the best editor.

Markdown has two drawbacks: 1. it does not support TOC natively. 2. RStudio cannot show headers in the editor.

Therefore, use rmarkdown format instead of markdown.

Writing a R book and self-publishing it in Amazon

Create professional reports from R scripts, with custom styles

How to create professional reports from R scripts, with custom styles

Publish R results

5 amazing free tools that can help with publishing R results and blogging

Scheduling R Markdown Reports via Email

http://www.analyticsforfun.com/2016/01/scheduling-r-markdown-reports-via-email.html

Create presentation file (beamer)

  1. Create Rmd file first in Rstudio by File -> R markdown. Select Presentation > choose pdf (beamer) as output format.
  2. Edit the template created by RStudio.
  3. Click 'Knit pdf' button (Ctrl+Shift+k) to create/display the pdf file.

An example of Rmd is

---
title: "My Example"
author: You Know Me
date: Dec 32, 2014
output: beamer_presentation
---

## R Markdown

This is an R Markdown presentation. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. 
For more details on using R Markdown see <http://rmarkdown.rstudio.com>.

When you click the **Knit** button a document will be generated that includes both content as well as the output of any 
embedded R code chunks within the document.

## Slide with Bullets

- Bullet 1
- Bullet 2
- Bullet 3. Mean is $\frac{1}{n} \sum_{i=1}^n x_i$.
$$ 
\mu = \frac{1}{n} \sum_{i=1}^n x_i
$$

## New slide

![picture of BDGE](/home/brb/Pictures/BDGEFinished.png)

## Slide with R Code and Output

```{r}
summary(cars)
```

## Slide with Plot

```{r, echo=FALSE}
plot(cars)
```

R notebook vs R markdown in RStudio

Difference between R MarkDown and R NoteBook

There is no coding difference. The difference is in the rendering. The file extension is the same.

R notebook

  • It adds html_notebook in the output option in the header.
  • You can then preview the rendering quickly without having to knit it (does not execute any of your R code chunks). If you manually 'Run' the chunks, the result will be shown up in preview.
  • It also refreshes the preview every time you save.
  • However in that preview you don't have the code output (no figures, no tables..)
  • You can mix several output options in your header so that you can keep the preview and keep your knit options for export
  • R Notebook is everything and above what R MarkDown is

Table creating packages

stargazer: Produces LaTeX code, HTML/CSS code and ASCII text for well-formatted tables that hold regression analysis results from several models side-by-side, as well as summary statistics

Graphics Output in LaTeX Format

Bibliographies

Bibliographies in RStudio Markdown are difficult – here’s how to make it easy

bookdown.org

The website is full of open-source books written with R markdown.

pkgdown: create a website for your package

Blogdown

Posterdown

posterdown: Use RMarkdown to generate PDF Conference Posters via HTML or LaTeX

Latex tools

Mathpix Snip Take a screenshot of math and paste the LaTeX into your editor