Markdown issues

Many of you still are not using markdown effectively.

All of you are correctly putting R code into code blocks, otherwise your R code wouldn't run when you knit the file.

But, some people are writing long responses as comments inside code chunks.

Many other people aren't using the formatting tools correctly outside the code chunks.

Make sure you look at your knit file and make sure it is easy to read!

Show example

Section headings

Pay careful attention to the way you use headings in Rmarkdown.

  • ## is the main section level heading
  • ### is the sub-section level heading
  • #### is for the sub-sub-section level heading

The key point is, think about the structure of the document, and use the headings consistently.

These get used when you use a table of contents for your document.

Table of Contents

---
title: "My Document"
output: 
  html_document:
    toc: yes
    toc_float: yes
---

pander

a useful tool for formatting tabular data in R Markdown

By default when you print a dataframe to a markdown document, it doesn't look that great.

head(mtcars)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 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.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

better formatting

pander turns the dataframe into something much nicer!

library(pander)
pander(mtcars, split.tables = 200)
  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

pander is smart

deals with many common output types

So you can pass model objects, summaries, etc

lm

pander(lm(mpg~wt, data=mtcars))
Fitting linear model: mpg ~ wt
  Estimate Std. Error t value Pr(>|t|)
(Intercept) 37.29 1.878 19.86 8.242e-19
wt -5.344 0.5591 -9.559 1.294e-10

chisq.test

pander(chisq.test(mtcars$cyl))
Chi-squared test for given probabilities: mtcars$cyl
Test statistic df P value
15.98 31 0.9881

anova

pander(anova(lm(mpg~cyl, data=mtcars)))
Analysis of Variance Table
  Df Sum Sq Mean Sq F value Pr(>F)
cyl 1 817.7 817.7 79.56 6.113e-10
Residuals 30 308.3 10.28 NA NA

prcomp

pander(summary(prcomp(mtcars)))
Principal Components Analysis (continued below)
  PC1 PC2 PC3 PC4 PC5 PC6
mpg -0.03812 0.009185 0.9821 0.04763 -0.08833 -0.1438
cyl 0.01204 -0.003372 -0.06348 -0.228 0.2387 -0.7938
disp 0.8996 0.4354 0.03144 -0.005087 -0.01074 0.007424
hp 0.4348 -0.8993 0.02509 0.03572 0.01655 0.001654
drat -0.00266 -0.0039 0.03972 -0.05713 -0.1333 0.2272
wt 0.006239 0.004861 -0.08491 0.128 -0.2435 -0.1271
qsec -0.006671 0.02501 -0.07167 0.8865 -0.2142 -0.1896
vs -0.002729 0.002198 0.004203 0.1771 -0.01689 0.1026
am -0.001963 -0.005794 0.05481 -0.1357 -0.0627 0.2052
gear -0.002605 -0.01127 0.04852 -0.1299 -0.2762 0.335
carb 0.005766 -0.02778 -0.1029 -0.2689 -0.8552 -0.2838
  PC7 PC8 PC9 PC10 PC11
mpg -0.03924 0.02271 -0.00279 0.03063 -0.01586
cyl 0.425 -0.189 0.04268 0.1317 0.1454
disp 0.0005824 -0.0005841 0.003533 -0.005399 0.000942
hp -0.002213 4.748e-06 -0.003734 0.001863 -0.002153
drat 0.03485 -0.9386 -0.01413 0.1841 -0.09738
wt -0.1866 0.1562 -0.3906 0.8299 -0.01986
qsec 0.2548 -0.1029 -0.09591 -0.2042 0.01107
vs -0.08079 -0.002133 0.684 0.3031 0.6257
am 0.2009 -0.02273 -0.5724 -0.1628 0.7332
gear 0.8016 0.2175 0.1561 0.2035 -0.1909
carb -0.1655 0.003972 0.1276 -0.24 0.0558
Table continues below
  PC1 PC2 PC3 PC4 PC5
Standard deviation 136.5 38.15 3.071 1.307 0.9065
Proportion of Variance 0.927 0.07237 0.00047 8e-05 4e-05
Cumulative Proportion 0.927 0.9994 0.9998 0.9999 1
  PC6 PC7 PC8 PC9 PC10 PC11
Standard deviation 0.6635 0.3086 0.286 0.2507 0.2107 0.1984
Proportion of Variance 2e-05 0 0 0 0 0
Cumulative Proportion 1 1 1 1 1 1

Challenge

Create a new markdown document that has three sections. Make sure your document has a table of contents. Knit it to be sure that it works.

Ask me three remaining questions you have about using R