The goal of htable is to easily and transparently translate R data.frames into styled HTML tables.
Make sure to build with vignettes to view examples of styling the tables.
# install.packages("devtools")
devtools::install_github("fazetu/htable", build_vignettes = TRUE)
library(htable)
ex <- data.frame(
A = 1:10,
B = 10:1,
C = -4:5,
D = letters[1:10],
E = c(1, NA, 2, NA, 3, NA, 4, NA, 5, NA),
Pct = runif(10),
Big = 100000:100009,
Money = c(100, 200, -100, -200, 1000.11, 2000.22, -1000.11, -2000.22, 0, 0.11),
stringsAsFactors = FALSE
)
First create the HTable object in one of two ways:
# ht <- HTable$new(ex)
ht <- htable(ex)
To get the HTML for this table:
ht$render()
#> [1] "<table style='margin-left:auto;margin-right:auto;'><thead><tr><th><div>A</div></th><th><div>B</div></th><th><div>C</div></th><th><div>D</div></th><th><div>E</div></th><th><div>Pct</div></th><th><div>Big</div></th><th><div>Money</div></th></tr></thead><tbody><tr><td><div>1</div></td><td><div>10</div></td><td><div>-4</div></td><td><div>a</div></td><td><div>1</div></td><td><div>0.98766976268962</div></td><td><div>100000</div></td><td><div>100</div></td></tr><tr><td><div>2</div></td><td><div>9</div></td><td><div>-3</div></td><td><div>b</div></td><td><div>NA</div></td><td><div>0.83207360515371</div></td><td><div>100001</div></td><td><div>200</div></td></tr><tr><td><div>3</div></td><td><div>8</div></td><td><div>-2</div></td><td><div>c</div></td><td><div>2</div></td><td><div>0.313282870454714</div></td><td><div>100002</div></td><td><div>-100</div></td></tr><tr><td><div>4</div></td><td><div>7</div></td><td><div>-1</div></td><td><div>d</div></td><td><div>NA</div></td><td><div>0.487539564725012</div></td><td><div>100003</div></td><td><div>-200</div></td></tr><tr><td><div>5</div></td><td><div>6</div></td><td><div>0</div></td><td><div>e</div></td><td><div>3</div></td><td><div>0.233070042915642</div></td><td><div>100004</div></td><td><div>1000.11</div></td></tr><tr><td><div>6</div></td><td><div>5</div></td><td><div>1</div></td><td><div>f</div></td><td><div>NA</div></td><td><div>0.515593397431076</div></td><td><div>100005</div></td><td><div>2000.22</div></td></tr><tr><td><div>7</div></td><td><div>4</div></td><td><div>2</div></td><td><div>g</div></td><td><div>4</div></td><td><div>0.0739094286691397</div></td><td><div>100006</div></td><td><div>-1000.11</div></td></tr><tr><td><div>8</div></td><td><div>3</div></td><td><div>3</div></td><td><div>h</div></td><td><div>NA</div></td><td><div>0.552099404623732</div></td><td><div>100007</div></td><td><div>-2000.22</div></td></tr><tr><td><div>9</div></td><td><div>2</div></td><td><div>4</div></td><td><div>i</div></td><td><div>5</div></td><td><div>0.715031072264537</div></td><td><div>100008</div></td><td><div>0</div></td></tr><tr><td><div>10</div></td><td><div>1</div></td><td><div>5</div></td><td><div>j</div></td><td><div>NA</div></td><td><div>0.521291874814779</div></td><td><div>100009</div></td><td><div>0.11</div></td></tr></tbody></table>"
To write the HTML to a file:
ht$writeLines("table.html")
In an RMarkdown document, include in your chunk settings
results="asis"
in order to get the actual HTML table to render. This
chunk has results="asis"
.
ht$Rmd()
A |
B |
C |
D |
E |
Pct |
Big |
Money |
---|---|---|---|---|---|---|---|
1 |
10 |
-4 |
a |
1 |
0.98766976268962 |
100000 |
100 |
2 |
9 |
-3 |
b |
NA |
0.83207360515371 |
100001 |
200 |
3 |
8 |
-2 |
c |
2 |
0.313282870454714 |
100002 |
-100 |
4 |
7 |
-1 |
d |
NA |
0.487539564725012 |
100003 |
-200 |
5 |
6 |
0 |
e |
3 |
0.233070042915642 |
100004 |
1000.11 |
6 |
5 |
1 |
f |
NA |
0.515593397431076 |
100005 |
2000.22 |
7 |
4 |
2 |
g |
4 |
0.0739094286691397 |
100006 |
-1000.11 |
8 |
3 |
3 |
h |
NA |
0.552099404623732 |
100007 |
-2000.22 |
9 |
2 |
4 |
i |
5 |
0.715031072264537 |
100008 |
0 |
10 |
1 |
5 |
j |
NA |
0.521291874814779 |
100009 |
0.11 |
When not working in an RMarkdown file, use the View()
method to see
the rendered HTML table.
ht$View()
For examples on how to style the tables, see the vignette.
vignette("htable", package = "htable")