Skip to contents

Extract Markdown Tables from Markdown Files

Usage

extract_md_tables(file, warn = TRUE, ...)

Arguments

file

Either a path to a file, a connection, or literal data (either a single string or a raw vector). Files starting with http://, https://, ftp://, or ftps:// will be automatically downloaded.

warn

Boolean. Should warnings be raised about possible issues with the passed file? Defaults to TRUE.

...

Arguments passed on to readr::read_delim.

Value

A tibble or list of tibbles.

Details

extract_md_tables attempts to capture all the markdown tables from file. Because it must parse through markdown that may contain much more than just tables, it requires that the tables follow the markdown table format much more closely than readMDTable::read_md_table.

Examples

md <-
"# Heading 1

We'll split the `mtcars` dataset for testing `extract_md_tables`.

## Heading 2

|model              |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   |

## Another Heading 2
Another paragraph.

With some lines.

Like this one.

|model              |mpg |cyl|disp |hp |drat|wt   |qsec |vs |am |gear|carb|
|-------------------|----|---|-----|---|----|-----|-----|---|---|----|----|
|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   |

Just some paragraph text here.

|model              |mpg |cyl|disp |hp |drat|wt   |qsec |vs |am |gear|carb|
|-------------------|----|---|-----|---|----|-----|-----|---|---|----|----|
|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   |

|model              |mpg |cyl|disp |hp |drat|wt   |qsec |vs |am |gear|carb|
|-------------------|----|---|-----|---|----|-----|-----|---|---|----|----|
|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   |"

# Extract tables from the markdown file
tables <- extract_md_tables(md)
#> Rows: 4 Columns: 12
#> ── Column specification ────────────────────────────────────────────────────────
#> Delimiter: "|"
#> chr  (1): model
#> dbl (11): mpg, cyl, disp, hp, drat, wt, qsec, vs, am, gear, carb
#> 
#>  Use `spec()` to retrieve the full column specification for this data.
#>  Specify the column types or set `show_col_types = FALSE` to quiet this message.
#> Rows: 4 Columns: 12
#> ── Column specification ────────────────────────────────────────────────────────
#> Delimiter: "|"
#> chr  (1): model
#> dbl (11): mpg, cyl, disp, hp, drat, wt, qsec, vs, am, gear, carb
#> 
#>  Use `spec()` to retrieve the full column specification for this data.
#>  Specify the column types or set `show_col_types = FALSE` to quiet this message.
#> Rows: 4 Columns: 12
#> ── Column specification ────────────────────────────────────────────────────────
#> Delimiter: "|"
#> chr  (1): model
#> dbl (11): mpg, cyl, disp, hp, drat, wt, qsec, vs, am, gear, carb
#> 
#>  Use `spec()` to retrieve the full column specification for this data.
#>  Specify the column types or set `show_col_types = FALSE` to quiet this message.
#> Rows: 5 Columns: 12
#> ── Column specification ────────────────────────────────────────────────────────
#> Delimiter: "|"
#> chr  (1): model
#> dbl (11): mpg, cyl, disp, hp, drat, wt, qsec, vs, am, gear, carb
#> 
#>  Use `spec()` to retrieve the full column specification for this data.
#>  Specify the column types or set `show_col_types = FALSE` to quiet this message.
tables[[2]]
#> # A tibble: 4 × 12
#>   model          mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
#>   <chr>        <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 Hornet Spor…  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2
#> 2 Valiant       18.1     6  225    105  2.76  3.46  20.2     1     0     3     1
#> 3 Duster 360    14.3     8  360    245  3.21  3.57  15.8     0     0     3     4
#> 4 Merc 240D     24.4     4  147.    62  3.69  3.19  20       1     0     4     2