Testing features in `blogdown`

July 23, 2017
By

(This article was first published on R on francojc ⟲, and kindly contributed to R-bloggers)



This is a post to test the functionality of blogdown. We are going to look at how various types of outputs are rendered and do some tweaking to get things to work right. The hope is to get an idea of what the best practices for creating posts and pages is when working with this software.

Tables

Here’s some more code working with tables with different functions.

as_tibble(mtcars) # to glimpse

And now using DT.

mtcars %>% 
  DT::datatable()

No go. 🙁1

How about htmlTable()?

library(htmlTable)
htmlTable(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21 6 160 110 3.9 2.62 16.46 0 1 4 4
Mazda RX4 Wag 21 6 160 110 3.9 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.32 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.44 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.46 20.22 1 0 3 1
Duster 360 14.3 8 360 245 3.21 3.57 15.84 0 0 3 4
Merc 240D 24.4 4 146.7 62 3.69 3.19 20 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.15 22.9 1 0 4 2
Merc 280 19.2 6 167.6 123 3.92 3.44 18.3 1 0 4 4
Merc 280C 17.8 6 167.6 123 3.92 3.44 18.9 1 0 4 4
Merc 450SE 16.4 8 275.8 180 3.07 4.07 17.4 0 0 3 3
Merc 450SL 17.3 8 275.8 180 3.07 3.73 17.6 0 0 3 3
Merc 450SLC 15.2 8 275.8 180 3.07 3.78 18 0 0 3 3
Cadillac Fleetwood 10.4 8 472 205 2.93 5.25 17.98 0 0 3 4
Lincoln Continental 10.4 8 460 215 3 5.424 17.82 0 0 3 4
Chrysler Imperial 14.7 8 440 230 3.23 5.345 17.42 0 0 3 4
Fiat 128 32.4 4 78.7 66 4.08 2.2 19.47 1 1 4 1
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.9 1 1 4 1
Toyota Corona 21.5 4 120.1 97 3.7 2.465 20.01 1 0 3 1
Dodge Challenger 15.5 8 318 150 2.76 3.52 16.87 0 0 3 2
AMC Javelin 15.2 8 304 150 3.15 3.435 17.3 0 0 3 2
Camaro Z28 13.3 8 350 245 3.73 3.84 15.41 0 0 3 4
Pontiac Firebird 19.2 8 400 175 3.08 3.845 17.05 0 0 3 2
Fiat X1-9 27.3 4 79 66 4.08 1.935 18.9 1 1 4 1
Porsche 914-2 26 4 120.3 91 4.43 2.14 16.7 0 1 5 2
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.9 1 1 5 2
Ford Pantera L 15.8 8 351 264 4.22 3.17 14.5 0 1 5 4
Ferrari Dino 19.7 6 145 175 3.62 2.77 15.5 0 1 5 6
Maserati Bora 15 8 301 335 3.54 3.57 14.6 0 1 5 8
Volvo 142E 21.4 4 121 109 4.11 2.78 18.6 1 1 4 2

OK, so that works. How about knitr::kable()?

knitr::kable(mtcars, caption = "This is the `mtcars` dataset.")
Table 1: This is the mtcars dataset.
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2

Looks nice.

Alert notes and warnings

The theme I’m using, academic, has hooks for alerts. The syntax looks like this:

{{% alert note %}}
Here is a tip or note...
{{% /alert %}}

{{% alert warning %}}
Here is a warning note...
{{% /alert %}}

And here are the results.

Here is a tip or note…

Here is a warning note

Tweets

It is sometimes useful to include Twitter cards in posts.
Here’s a tweet card using the blogdown::shortcode() command:

blogdown::shortcode('tweet', '842100683650273281')

Plotting

Let’s make a simple plot and see where the image file ends up.

mtcars %>% 
  ggplot(aes(x = mpg, y = hp)) +
  geom_point() +
  geom_smooth(method = "lm")

Basic plot using `ggplot2`.

Figure 1: Basic plot using ggplot2.

Plots are generated and then copied to the /static/posts// directory and the plot is named by the code chunk’s handle.

Images

Adding images from other sources in Rmarkdown documents can be acheived through markdown directly with this basic syntax.

![](../path/image.png)

The path in Hugo for static images makes reference to the /post/ directory inside of the /static/ directory. So an image named app.png would be /post/app.png in the syntax but the image will live in the /static/post/ directory.

The problem with this is that you need to copy the image to the /static/img/ or /static/post/ directory. You can choose just make sure to include the correct path in your code. However, this process is a little tedious, I think.

I thought it would be more convenient to use the knitr::include_graphics() function to make reference to an image inside the content/post/ directory and a subdirectory images/ but that does do the copying of the image, like I thought it might. Instead, the image file is not copied to the static/post/ directory, so the path is invalid and the image is not displayed.

knitr::include_graphics("images/tortoise001.png")

However, using the EBImage package from the bioconductor repository, the same behavior as graphics generated by plots applies to the image. In this way the image is copied to the /static/post/ directory and lives in a subdirectory named by the slug of the post –just like plots. This seems to be a bit more complicated to have to load the EBImage library and import the image, but is more convenient in that it organizes images by post and the links are valid.

library(EBImage)
img <- EBImage::readImage(files = "images/tortoise001.png")
display(img)

This is a tortoise generated by `EBImage`.

Figure 2: This is a tortoise generated by EBImage.

Citations

You can even add citations through the citr package which will facilitate creating citations throug the use of the Tools > Addin dropdown menu. Just create a valid path to a .bib bibliography file in the YAML section of the .Rmd document.

---
bibliography: references.bib
---

Load the library and then use the dropdown tool to generate the citation syntax for markdown.

library(citr)

Here’s a citation (Gries 2013)

References

Gries, ST. 2013. Statistics for Linguistics with R. A Practical Introduction. 2nd revise.


  1. Unfortunately the DT:datatable() function does not work with this theme as of yet.

To leave a comment for the author, please follow the link and comment on their blog: R on francojc ⟲.

R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...



If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Comments are closed.

Search R-bloggers

Sponsors

Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)