From acf4e75cc372cb76ae5bcdbb5e249c483a1ffa86 Mon Sep 17 00:00:00 2001 From: vincentarelbundock Date: Sun, 7 Jul 2024 12:31:01 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20vincenta?= =?UTF-8?q?relbundock/tinytable@60e580fe25398d79abf3e6a587c9d013b27fd4f3?= =?UTF-8?q?=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- man/format_tt.html | 134 +-- man/group_tt.html | 158 ++-- man/rbind2-tinytable-tinytable-method.html | 72 +- man/theme_tt.html | 30 +- man/tt.html | 66 +- search.json | 8 +- vignettes/custom.html | 120 +-- vignettes/format.html | 342 ++++---- vignettes/group.html | 328 +++---- vignettes/plot.html | 198 ++--- vignettes/style.html | 818 +++++++++--------- vignettes/theme.html | 102 +-- vignettes/tinytable.html | 390 ++++----- .../id0qw0pksvysm9hq577v3r.png | Bin 0 -> 1127 bytes .../id0th6s0nxrxh8zib118ew.png | Bin 0 -> 1829 bytes .../id0vsrlzmh133kovveczpl.png | Bin 0 -> 5073 bytes .../id2z9ecfxzqc9wwbe6kf6j.png | Bin 0 -> 5057 bytes .../id7g798qc6hx9cy8eryg9p.png | Bin 0 -> 2558 bytes .../id9pdezm9bgwosmt25jb56.png | Bin 0 -> 2072 bytes .../ida5yx5qpneokch5ycl3mb.png | Bin 0 -> 12175 bytes .../idb2kbi3kcv9u7sy1jcf6w.png | Bin 0 -> 2214 bytes .../idewbmw9piu8y10hllb77j.png | Bin 0 -> 11898 bytes .../idfmta29o5gssi1u2b7wnv.png | Bin 0 -> 12594 bytes .../idhb5stsgdh34m00c2ntv3.png | Bin 0 -> 2077 bytes .../idk3xtpgnrzu3fz5cbyju7.png | Bin 0 -> 11877 bytes .../idk7inl03vi74igep3vy2b.png | Bin 0 -> 15240 bytes .../idnhja4jd0h6kz8omkge0e.png | Bin 0 -> 529 bytes .../idnl2vj5bt50mlaukfr0dt.png | Bin 0 -> 2250 bytes .../ido5eewl9g3inuurcpr6pq.png | Bin 0 -> 1728 bytes .../idqmvs50uufrcb8jl9wrf5.png | Bin 0 -> 512 bytes .../idqnso7jp55aephbtroc49.png | Bin 0 -> 11912 bytes .../idrvqfk99pkcv7ms278nz6.png | Bin 0 -> 5080 bytes .../ids9cusaeom8p1vie6dwvi.png | Bin 0 -> 2191 bytes .../idsg8ebhdjsvwlyilzn731.png | Bin 0 -> 2444 bytes .../idslmddbln8uvfeb4nd8oh.png | Bin 0 -> 11951 bytes .../idt25k33fyia7xn4cwzwae.png | Bin 0 -> 1846 bytes .../iduy9xjro8fgx80okx00ml.png | Bin 0 -> 548 bytes .../idvyvpzj04nko38msktbe9.png | Bin 0 -> 8399 bytes .../idzal0jjlmfk23ilxnr9di.png | Bin 0 -> 11171 bytes .../idzk13d7pf8jzr4yl7kvfn.png | Bin 0 -> 2564 bytes vignettes/tinytable_tutorial.pdf | Bin 1788385 -> 1788826 bytes 41 files changed, 1383 insertions(+), 1383 deletions(-) create mode 100644 vignettes/tinytable_assets/id0qw0pksvysm9hq577v3r.png create mode 100644 vignettes/tinytable_assets/id0th6s0nxrxh8zib118ew.png create mode 100644 vignettes/tinytable_assets/id0vsrlzmh133kovveczpl.png create mode 100644 vignettes/tinytable_assets/id2z9ecfxzqc9wwbe6kf6j.png create mode 100644 vignettes/tinytable_assets/id7g798qc6hx9cy8eryg9p.png create mode 100644 vignettes/tinytable_assets/id9pdezm9bgwosmt25jb56.png create mode 100644 vignettes/tinytable_assets/ida5yx5qpneokch5ycl3mb.png create mode 100644 vignettes/tinytable_assets/idb2kbi3kcv9u7sy1jcf6w.png create mode 100644 vignettes/tinytable_assets/idewbmw9piu8y10hllb77j.png create mode 100644 vignettes/tinytable_assets/idfmta29o5gssi1u2b7wnv.png create mode 100644 vignettes/tinytable_assets/idhb5stsgdh34m00c2ntv3.png create mode 100644 vignettes/tinytable_assets/idk3xtpgnrzu3fz5cbyju7.png create mode 100644 vignettes/tinytable_assets/idk7inl03vi74igep3vy2b.png create mode 100644 vignettes/tinytable_assets/idnhja4jd0h6kz8omkge0e.png create mode 100644 vignettes/tinytable_assets/idnl2vj5bt50mlaukfr0dt.png create mode 100644 vignettes/tinytable_assets/ido5eewl9g3inuurcpr6pq.png create mode 100644 vignettes/tinytable_assets/idqmvs50uufrcb8jl9wrf5.png create mode 100644 vignettes/tinytable_assets/idqnso7jp55aephbtroc49.png create mode 100644 vignettes/tinytable_assets/idrvqfk99pkcv7ms278nz6.png create mode 100644 vignettes/tinytable_assets/ids9cusaeom8p1vie6dwvi.png create mode 100644 vignettes/tinytable_assets/idsg8ebhdjsvwlyilzn731.png create mode 100644 vignettes/tinytable_assets/idslmddbln8uvfeb4nd8oh.png create mode 100644 vignettes/tinytable_assets/idt25k33fyia7xn4cwzwae.png create mode 100644 vignettes/tinytable_assets/iduy9xjro8fgx80okx00ml.png create mode 100644 vignettes/tinytable_assets/idvyvpzj04nko38msktbe9.png create mode 100644 vignettes/tinytable_assets/idzal0jjlmfk23ilxnr9di.png create mode 100644 vignettes/tinytable_assets/idzk13d7pf8jzr4yl7kvfn.png diff --git a/man/format_tt.html b/man/format_tt.html index ac96e6ca..07f29c01 100644 --- a/man/format_tt.html +++ b/man/format_tt.html @@ -687,15 +687,15 @@

Examples

- +
@@ -757,14 +757,14 @@

Examples

- + - - + + - + @@ -778,15 +778,15 @@

Examples

-
10 00010 00110 000
9 999 9 99910 00110 001
10 00110 000 9 999
+
@@ -868,15 +868,15 @@

Examples

-
+
@@ -968,15 +968,15 @@

Examples

-
+
@@ -1052,15 +1052,15 @@

Examples

-
+
@@ -1136,15 +1136,15 @@

Examples

-
+
@@ -1230,15 +1230,15 @@

Examples

-
+
diff --git a/man/group_tt.html b/man/group_tt.html index 0ccd9fa6..b8efa67b 100644 --- a/man/group_tt.html +++ b/man/group_tt.html @@ -478,15 +478,15 @@

Examples

-
+
@@ -681,15 +681,15 @@

Examples

-
+
@@ -883,15 +883,15 @@

Examples

-
+
@@ -1087,15 +1087,15 @@

Examples

-
Hamburgers
+
diff --git a/man/rbind2-tinytable-tinytable-method.html b/man/rbind2-tinytable-tinytable-method.html index a6449393..42f959af 100644 --- a/man/rbind2-tinytable-tinytable-method.html +++ b/man/rbind2-tinytable-tinytable-method.html @@ -483,15 +483,15 @@

Examples

-
Foo
+
@@ -606,15 +606,15 @@

Examples

-
Combine two tiny tables.
+
@@ -730,15 +730,15 @@

Examples

-
Combine two tiny tables.
+
@@ -847,15 +847,15 @@

Examples

-
Combine two tiny tables.
+
diff --git a/man/theme_tt.html b/man/theme_tt.html index ce74773f..e59fb8f3 100644 --- a/man/theme_tt.html +++ b/man/theme_tt.html @@ -517,15 +517,15 @@

Examples

-
Combine two tiny tables.
+
diff --git a/man/tt.html b/man/tt.html index f98bc459..d2dca535 100644 --- a/man/tt.html +++ b/man/tt.html @@ -608,15 +608,15 @@

Examples

-
+
@@ -720,15 +720,15 @@

Examples

-
+
@@ -952,15 +952,15 @@

Examples

-
+
diff --git a/search.json b/search.json index 414d4e26..eb35f516 100644 --- a/search.json +++ b/search.json @@ -219,7 +219,7 @@ "href": "vignettes/format.html", "title": "Formatting", "section": "", - "text": "library(tinytable)\noptions(tinytable_tt_digits = 3)\noptions(tinytable_theme_placement_latex_float = \"H\")\nx <- mtcars[1:4, 1:5]\n\n\n\nThe tt() function is minimalist; it’s inteded purpose is simply to draw nice tables. Users who want to format numbers, dates, strings, and other variables in different ways should process their data before supplying it to the tt() table-drawing function. To do so, we can use the format_tt() function supplied by the tinytable.\nIn a very simple case—such as printing 2 significant digits of all numeric variables—we can use the digits argument of tt():\n\ndat <- data.frame(\n w = c(143002.2092, 201399.181, 100188.3883),\n x = c(1.43402, 201.399, 0.134588),\n y = as.Date(sample(1:1000, 3), origin = \"1970-01-01\"),\n z = c(TRUE, TRUE, FALSE))\n\ntt(dat, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143002\n 1.43\n 1971-02-06\n True \n \n \n 201399\n 201.4 \n 1970-04-30\n True \n \n \n 100188\n 0.13\n 1972-02-21\n False\n \n \n \n \n\n\n\nWe can get more fine-grained control over formatting by calling format_tt() after tt(), optionally by specifying the columns to format with j:\n\ntt(dat) |> \n format_tt(\n j = 2:4,\n digits = 1,\n date = \"%B %d %Y\") |>\n format_tt(\n j = 1,\n digits = 2,\n num_mark_big = \" \",\n num_mark_dec = \",\",\n num_fmt = \"decimal\")\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143 002,21\n 1.4\n February 06 1971\n True\n \n \n 201 399,18\n 201.4\n April 30 1970\n True\n \n \n 100 188,39\n 0.1\n February 21 1972\n False\n \n \n \n \n\n\n\nWe can use a regular expression in j to select columns, and the ?sprintf function to format strings, numbers, and to do string interpolation (similar to the glue package, but using Base R):\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.432\n 99T\n \n \n Food: Halloumi\n 201.399\n 7.3B\n \n \n Food: Tofu\n 0.146\n 29M\n \n \n Food: Beans\n 0.003\n 94K\n \n \n \n \n\n\n\nFinally, if you like the format_tt() interface, you can use it directly with numbers, vectors, or data frames:\n\nformat_tt(pi, digits = 1)\n\n[1] \"3\"\n\nformat_tt(dat, digits = 1, num_suffix = TRUE)\n\n a b c\n1 Burger 1 99T\n2 Halloumi 201 7B\n3 Tofu 0.1 29M\n4 Beans 0.003 94K\n\n\n\n\n\nBy default, format_tt() formats numbers to ensure that the smallest value in a vector (column) has at least a certain number of significant digits. For example,\n\nk <- data.frame(x = c(0.000123456789, 12.4356789))\ntt(k, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12.43568\n \n \n \n \n\n\n\nWe can alter this behavior to ensure to round significant digits on a per-cell basis, using the num_fmt argument in format_tt():\n\ntt(k) |> format_tt(digits = 2, num_fmt = \"significant_cell\")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12\n \n \n \n \n\n\n\nThe numeric formatting options in format_tt() can also be controlled using global options:\n\noptions(\"tinytable_tt_digits\" = 2)\noptions(\"tinytable_format_num_fmt\" = \"significant_cell\")\ntt(k)\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12 \n \n \n \n \n\n\n\n\n\n\nMissing values can be replaced by a custom string using the replace argument (default \"\"):\n\ntab <- data.frame(a = c(NA, 1, 2), b = c(3, NA, 5))\n\ntt(tab)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n NA\n 3\n \n \n 1\n NA\n \n \n 2\n 5\n \n \n \n \n\n\ntt(tab) |> format_tt()\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n \n 3\n \n \n 1\n \n \n \n 2\n 5\n \n \n \n \n\n\ntt(tab) |> format_tt(replace = \"-\")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n -\n 3\n \n \n 1\n -\n \n \n 2\n 5\n \n \n \n \n\n\n\nWe can also specify multiple value replacements at once using a named list of vectors:\n\ntmp <- data.frame(x = 1:5, y = c(pi, NA, NaN, -Inf, Inf))\ndict <- list(\"-\" = c(NA, NaN), \"-∞\" = -Inf, \"∞\" = Inf)\ntt(tmp) |> format_tt(replace = dict, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n x\n y\n \n \n \n \n \n 1\n 3.1\n \n \n 2\n -\n \n \n 3\n -\n \n \n 4\n -∞\n \n \n 5\n ∞\n \n \n \n \n\n\n\n\n\n\nLaTeX and HTML use special characters to indicate strings which should be interpreted rather than displayed as text. For example, including underscores or dollar signs in LaTeX can cause compilation errors in some documents. To display those special characters, we need to substitute or escape them with backslashes, depending on the output format. The escape argument of format_tt() can be used to do this automatically:\n\ndat <- data.frame(\n \"LaTeX\" = c(\"Dollars $\", \"Percent %\", \"Underscore _\"),\n \"HTML\" = c(\"<br>\", \"<sup>4</sup>\", \"<emph>blah</emph>\")\n)\n\ntt(dat) |> format_tt(escape = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n LaTeX\n HTML\n \n \n \n \n \n Dollars $\n <br>\n \n \n Percent %\n <sup>4</sup>\n \n \n Underscore _\n <emph>blah</emph>\n \n \n \n \n\n\n\nWhen applied to a tt() table, format_tt() will determine the type of escaping to do automatically. When applied to a string or vector, we must specify the type of escaping to apply:\n\nformat_tt(\"_ Dollars $\", escape = \"latex\")\n\n[1] \"\\\\_ Dollars \\\\$\"\n\n\n\n\n\nMarkdown can be rendered in cells by using the markdown argument of the format_tt() function (note: this requires installing the markdown as an optional dependency).\n\ndat <- data.frame( markdown = c(\n \"This is _italic_ text.\",\n \"This sentence ends with a superscript.^2^\")\n)\n\ntt(dat) |>\n format_tt(j = 1, markdown = TRUE) |>\n style_tt(j = 1, align = \"c\")\n\n\n\n \n\n \n \n \n \n \n \n markdown\n \n \n \n \n \n This is italic text.\n \n \n This sentence ends with a superscript.2\n \n \n \n \n\n\n\nMarkdown syntax can be particularly useful when formatting URLs in a table:\n\ndat <- data.frame(\n `Package (link)` = c(\n \"[`marginaleffects`](https://www.marginaleffects.com/)\",\n \"[`modelsummary`](https://www.modelsummary.com/)\",\n \"[`tinytable`](https://vincentarelbundock.github.io/tinytable/)\",\n \"[`countrycode`](https://vincentarelbundock.github.io/countrycode/)\",\n \"[`WDI`](https://vincentarelbundock.github.io/WDI/)\",\n \"[`softbib`](https://vincentarelbundock.github.io/softbib/)\",\n \"[`tinysnapshot`](https://vincentarelbundock.github.io/tinysnapshot/)\",\n \"[`altdoc`](https://etiennebacher.github.io/altdoc/)\",\n \"[`tinyplot`](https://grantmcdermott.com/tinyplot/)\",\n \"[`parameters`](https://easystats.github.io/parameters/)\",\n \"[`insight`](https://easystats.github.io/insight/)\"\n ),\n Purpose = c(\n \"Interpreting statistical models\",\n \"Data and model summaries\",\n \"Draw beautiful tables easily\",\n \"Convert country codes and names\",\n \"Download data from the World Bank\",\n \"Software bibliographies in R\",\n \"Snapshots for unit tests using `tinytest`\",\n \"Create documentation website for R packages\",\n \"Extension of base R plot functions\",\n \"Extract from model objects\",\n \"Extract information from model objects\"\n ),\n check.names = FALSE\n)\n\ntt(dat) |> format_tt(j = 1, markdown = TRUE)\n\n\n\n \n\n \n \n Vincent sometimes contributes to these R packages.\n \n \n \n Package (link)\n Purpose\n \n \n \n \n \n marginaleffects\n Interpreting statistical models \n \n \n modelsummary\n Data and model summaries \n \n \n tinytable\n Draw beautiful tables easily \n \n \n countrycode\n Convert country codes and names \n \n \n WDI\n Download data from the World Bank \n \n \n softbib\n Software bibliographies in R \n \n \n tinysnapshot\n Snapshots for unit tests using `tinytest` \n \n \n altdoc\n Create documentation website for R packages\n \n \n tinyplot\n Extension of base R plot functions \n \n \n parameters\n Extract from model objects \n \n \n insight\n Extract information from model objects \n \n \n \n \n\n\n\n\n\n\nOn top of the built-in features of format_tt, a custom formatting function can be specified via the fn argument. The fn argument takes a function that accepts a single vector and returns a string (or something that coerces to a string like a number).\n\ntt(x) |> \n format_tt(j = \"mpg\", fn = function(x) paste0(x, \" mpg\")) |>\n format_tt(j = \"drat\", fn = \\(x) signif(x, 2))\n\n\n\n \n\n \n \n \n \n \n \n mpg\n cyl\n disp\n hp\n drat\n \n \n \n \n \n 21 mpg\n 6\n 160\n 110\n 3.9\n \n \n 21 mpg\n 6\n 160\n 110\n 3.9\n \n \n 22.8 mpg\n 4\n 108\n 93\n 3.8\n \n \n 21.4 mpg\n 6\n 258\n 110\n 3.1\n \n \n \n \n\n\n\nFor example, the scales package which is used internally by ggplot2 provides a bunch of useful tools for formatting (e.g. dates, numbers, percents, logs, currencies, etc.). The label_*() functions can be passed to the fn argument.\nNote that we call format_tt(escape = TRUE) at the end of the pipeline because the column names and cells include characters that need to be escaped in LaTeX: _, %, and $. This last call is superfluous in HTML.\n\nthumbdrives <- data.frame(\n date_lookup = as.Date(c(\"2024-01-15\", \"2024-01-18\", \"2024-01-14\", \"2024-01-16\")),\n price = c(18.49, 19.99, 24.99, 24.99),\n price_rank = c(1, 2, 3, 3),\n memory = c(16e9, 12e9, 10e9, 8e9),\n speed_benchmark = c(0.6, 0.73, 0.82, 0.99)\n)\n\ntt(thumbdrives) |>\n format_tt(j = 1, fn = scales::label_date(\"%e %b\", locale = \"fr\")) |>\n format_tt(j = 2, fn = scales::label_currency()) |>\n format_tt(j = 3, fn = scales::label_ordinal()) |> \n format_tt(j = 4, fn = scales::label_bytes()) |> \n format_tt(j = 5, fn = scales::label_percent()) |>\n format_tt(escape = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n date_lookup\n price\n price_rank\n memory\n speed_benchmark\n \n \n \n \n \n 2024-01-15\n $18.49\n 1st\n 16 GB\n 60%\n \n \n 2024-01-18\n $19.99\n 2nd\n 12 GB\n 73%\n \n \n 2024-01-14\n $24.99\n 3rd\n 10 GB\n 82%\n \n \n 2024-01-16\n $24.99\n 3rd\n 8 GB\n 99%\n \n \n \n \n\n\n\n\n\n\nQuarto automatically applies some data processing to the content of the tables it renders. By default, tinytable disables this processing, because it can enter in conflict with styling and formatting features of the package.\nTo enable Quarto data processing, we can use the quarto argument of the format_tt() function. This argument allows users to mark certain cells explicitly for processing by Quarto, by wrapping them in a special “span” called “data-qmd”, supported by Quarto:\n\nk <- data.frame(Thing = \"qwerty\", Citation = \"@Lovelace1842\")\n\ntt(k) |> format_tt(quarto = TRUE)\n\n\n\n \n\n \n \n \n\n\n\nThing\nCitation\n\n\n\n\nqwerty\nLovelace (1842)\n\n\n\n\n \n\n\n\nSome users may want to apply Quarto data processing to all tables. This can be done with themes:\n\ntheme_quarto <- function(x) format_tt(x, quarto = TRUE)\noptions(tinytable_tt_theme = theme_quarto)\n\ntt(k)\n\n\n\n \n\n \n \n \n\n\n\nThing\nCitation\n\n\n\n\nqwerty\nLovelace (1842)\n\n\n\n\n \n\n\n\nBack to normal:\n\noptions(tinytable_tt_theme = NULL)\n\nAlternatively, users can set a global option to process all tables in Quarto, but they will then have to mark each cell with special content using format_tt(quarto):\n\noptions(tinytable_quarto_disable_processing = FALSE)\n\ntt(x)\n\n\n\n \n\n \n \n \n\n\n\nmpg\ncyl\ndisp\nhp\ndrat\n\n\n\n\n21.0\n6\n160\n110\n3.90\n\n\n21.0\n6\n160\n110\n3.90\n\n\n22.8\n4\n108\n93\n3.85\n\n\n21.4\n6\n258\n110\n3.08\n\n\n\n\n \n\n\n\nNotice that Quarto is now processing the table, so we lose the default tinytable theme and get the default striped Quarto look.\nBack to normal:\n\noptions(tinytable_quarto_disable_processing = TRUE)", + "text": "library(tinytable)\noptions(tinytable_tt_digits = 3)\noptions(tinytable_theme_placement_latex_float = \"H\")\nx <- mtcars[1:4, 1:5]\n\n\n\nThe tt() function is minimalist; it’s inteded purpose is simply to draw nice tables. Users who want to format numbers, dates, strings, and other variables in different ways should process their data before supplying it to the tt() table-drawing function. To do so, we can use the format_tt() function supplied by the tinytable.\nIn a very simple case—such as printing 2 significant digits of all numeric variables—we can use the digits argument of tt():\n\ndat <- data.frame(\n w = c(143002.2092, 201399.181, 100188.3883),\n x = c(1.43402, 201.399, 0.134588),\n y = as.Date(sample(1:1000, 3), origin = \"1970-01-01\"),\n z = c(TRUE, TRUE, FALSE))\n\ntt(dat, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143002\n 1.43\n 1970-03-14\n True \n \n \n 201399\n 201.4 \n 1970-04-07\n True \n \n \n 100188\n 0.13\n 1970-09-16\n False\n \n \n \n \n\n\n\nWe can get more fine-grained control over formatting by calling format_tt() after tt(), optionally by specifying the columns to format with j:\n\ntt(dat) |> \n format_tt(\n j = 2:4,\n digits = 1,\n date = \"%B %d %Y\") |>\n format_tt(\n j = 1,\n digits = 2,\n num_mark_big = \" \",\n num_mark_dec = \",\",\n num_fmt = \"decimal\")\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143 002,21\n 1.4\n March 14 1970\n True\n \n \n 201 399,18\n 201.4\n April 07 1970\n True\n \n \n 100 188,39\n 0.1\n September 16 1970\n False\n \n \n \n \n\n\n\nWe can use a regular expression in j to select columns, and the ?sprintf function to format strings, numbers, and to do string interpolation (similar to the glue package, but using Base R):\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.432\n 99T\n \n \n Food: Halloumi\n 201.399\n 7.3B\n \n \n Food: Tofu\n 0.146\n 29M\n \n \n Food: Beans\n 0.003\n 94K\n \n \n \n \n\n\n\nFinally, if you like the format_tt() interface, you can use it directly with numbers, vectors, or data frames:\n\nformat_tt(pi, digits = 1)\n\n[1] \"3\"\n\nformat_tt(dat, digits = 1, num_suffix = TRUE)\n\n a b c\n1 Burger 1 99T\n2 Halloumi 201 7B\n3 Tofu 0.1 29M\n4 Beans 0.003 94K\n\n\n\n\n\nBy default, format_tt() formats numbers to ensure that the smallest value in a vector (column) has at least a certain number of significant digits. For example,\n\nk <- data.frame(x = c(0.000123456789, 12.4356789))\ntt(k, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12.43568\n \n \n \n \n\n\n\nWe can alter this behavior to ensure to round significant digits on a per-cell basis, using the num_fmt argument in format_tt():\n\ntt(k) |> format_tt(digits = 2, num_fmt = \"significant_cell\")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12\n \n \n \n \n\n\n\nThe numeric formatting options in format_tt() can also be controlled using global options:\n\noptions(\"tinytable_tt_digits\" = 2)\noptions(\"tinytable_format_num_fmt\" = \"significant_cell\")\ntt(k)\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12 \n \n \n \n \n\n\n\n\n\n\nMissing values can be replaced by a custom string using the replace argument (default \"\"):\n\ntab <- data.frame(a = c(NA, 1, 2), b = c(3, NA, 5))\n\ntt(tab)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n NA\n 3\n \n \n 1\n NA\n \n \n 2\n 5\n \n \n \n \n\n\ntt(tab) |> format_tt()\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n \n 3\n \n \n 1\n \n \n \n 2\n 5\n \n \n \n \n\n\ntt(tab) |> format_tt(replace = \"-\")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n -\n 3\n \n \n 1\n -\n \n \n 2\n 5\n \n \n \n \n\n\n\nWe can also specify multiple value replacements at once using a named list of vectors:\n\ntmp <- data.frame(x = 1:5, y = c(pi, NA, NaN, -Inf, Inf))\ndict <- list(\"-\" = c(NA, NaN), \"-∞\" = -Inf, \"∞\" = Inf)\ntt(tmp) |> format_tt(replace = dict, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n x\n y\n \n \n \n \n \n 1\n 3.1\n \n \n 2\n -\n \n \n 3\n -\n \n \n 4\n -∞\n \n \n 5\n ∞\n \n \n \n \n\n\n\n\n\n\nLaTeX and HTML use special characters to indicate strings which should be interpreted rather than displayed as text. For example, including underscores or dollar signs in LaTeX can cause compilation errors in some documents. To display those special characters, we need to substitute or escape them with backslashes, depending on the output format. The escape argument of format_tt() can be used to do this automatically:\n\ndat <- data.frame(\n \"LaTeX\" = c(\"Dollars $\", \"Percent %\", \"Underscore _\"),\n \"HTML\" = c(\"<br>\", \"<sup>4</sup>\", \"<emph>blah</emph>\")\n)\n\ntt(dat) |> format_tt(escape = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n LaTeX\n HTML\n \n \n \n \n \n Dollars $\n <br>\n \n \n Percent %\n <sup>4</sup>\n \n \n Underscore _\n <emph>blah</emph>\n \n \n \n \n\n\n\nWhen applied to a tt() table, format_tt() will determine the type of escaping to do automatically. When applied to a string or vector, we must specify the type of escaping to apply:\n\nformat_tt(\"_ Dollars $\", escape = \"latex\")\n\n[1] \"\\\\_ Dollars \\\\$\"\n\n\n\n\n\nMarkdown can be rendered in cells by using the markdown argument of the format_tt() function (note: this requires installing the markdown as an optional dependency).\n\ndat <- data.frame( markdown = c(\n \"This is _italic_ text.\",\n \"This sentence ends with a superscript.^2^\")\n)\n\ntt(dat) |>\n format_tt(j = 1, markdown = TRUE) |>\n style_tt(j = 1, align = \"c\")\n\n\n\n \n\n \n \n \n \n \n \n markdown\n \n \n \n \n \n This is italic text.\n \n \n This sentence ends with a superscript.2\n \n \n \n \n\n\n\nMarkdown syntax can be particularly useful when formatting URLs in a table:\n\ndat <- data.frame(\n `Package (link)` = c(\n \"[`marginaleffects`](https://www.marginaleffects.com/)\",\n \"[`modelsummary`](https://www.modelsummary.com/)\",\n \"[`tinytable`](https://vincentarelbundock.github.io/tinytable/)\",\n \"[`countrycode`](https://vincentarelbundock.github.io/countrycode/)\",\n \"[`WDI`](https://vincentarelbundock.github.io/WDI/)\",\n \"[`softbib`](https://vincentarelbundock.github.io/softbib/)\",\n \"[`tinysnapshot`](https://vincentarelbundock.github.io/tinysnapshot/)\",\n \"[`altdoc`](https://etiennebacher.github.io/altdoc/)\",\n \"[`tinyplot`](https://grantmcdermott.com/tinyplot/)\",\n \"[`parameters`](https://easystats.github.io/parameters/)\",\n \"[`insight`](https://easystats.github.io/insight/)\"\n ),\n Purpose = c(\n \"Interpreting statistical models\",\n \"Data and model summaries\",\n \"Draw beautiful tables easily\",\n \"Convert country codes and names\",\n \"Download data from the World Bank\",\n \"Software bibliographies in R\",\n \"Snapshots for unit tests using `tinytest`\",\n \"Create documentation website for R packages\",\n \"Extension of base R plot functions\",\n \"Extract from model objects\",\n \"Extract information from model objects\"\n ),\n check.names = FALSE\n)\n\ntt(dat) |> format_tt(j = 1, markdown = TRUE)\n\n\n\n \n\n \n \n Vincent sometimes contributes to these R packages.\n \n \n \n Package (link)\n Purpose\n \n \n \n \n \n marginaleffects\n Interpreting statistical models \n \n \n modelsummary\n Data and model summaries \n \n \n tinytable\n Draw beautiful tables easily \n \n \n countrycode\n Convert country codes and names \n \n \n WDI\n Download data from the World Bank \n \n \n softbib\n Software bibliographies in R \n \n \n tinysnapshot\n Snapshots for unit tests using `tinytest` \n \n \n altdoc\n Create documentation website for R packages\n \n \n tinyplot\n Extension of base R plot functions \n \n \n parameters\n Extract from model objects \n \n \n insight\n Extract information from model objects \n \n \n \n \n\n\n\n\n\n\nOn top of the built-in features of format_tt, a custom formatting function can be specified via the fn argument. The fn argument takes a function that accepts a single vector and returns a string (or something that coerces to a string like a number).\n\ntt(x) |> \n format_tt(j = \"mpg\", fn = function(x) paste0(x, \" mpg\")) |>\n format_tt(j = \"drat\", fn = \\(x) signif(x, 2))\n\n\n\n \n\n \n \n \n \n \n \n mpg\n cyl\n disp\n hp\n drat\n \n \n \n \n \n 21 mpg\n 6\n 160\n 110\n 3.9\n \n \n 21 mpg\n 6\n 160\n 110\n 3.9\n \n \n 22.8 mpg\n 4\n 108\n 93\n 3.8\n \n \n 21.4 mpg\n 6\n 258\n 110\n 3.1\n \n \n \n \n\n\n\nFor example, the scales package which is used internally by ggplot2 provides a bunch of useful tools for formatting (e.g. dates, numbers, percents, logs, currencies, etc.). The label_*() functions can be passed to the fn argument.\nNote that we call format_tt(escape = TRUE) at the end of the pipeline because the column names and cells include characters that need to be escaped in LaTeX: _, %, and $. This last call is superfluous in HTML.\n\nthumbdrives <- data.frame(\n date_lookup = as.Date(c(\"2024-01-15\", \"2024-01-18\", \"2024-01-14\", \"2024-01-16\")),\n price = c(18.49, 19.99, 24.99, 24.99),\n price_rank = c(1, 2, 3, 3),\n memory = c(16e9, 12e9, 10e9, 8e9),\n speed_benchmark = c(0.6, 0.73, 0.82, 0.99)\n)\n\ntt(thumbdrives) |>\n format_tt(j = 1, fn = scales::label_date(\"%e %b\", locale = \"fr\")) |>\n format_tt(j = 2, fn = scales::label_currency()) |>\n format_tt(j = 3, fn = scales::label_ordinal()) |> \n format_tt(j = 4, fn = scales::label_bytes()) |> \n format_tt(j = 5, fn = scales::label_percent()) |>\n format_tt(escape = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n date_lookup\n price\n price_rank\n memory\n speed_benchmark\n \n \n \n \n \n 2024-01-15\n $18.49\n 1st\n 16 GB\n 60%\n \n \n 2024-01-18\n $19.99\n 2nd\n 12 GB\n 73%\n \n \n 2024-01-14\n $24.99\n 3rd\n 10 GB\n 82%\n \n \n 2024-01-16\n $24.99\n 3rd\n 8 GB\n 99%\n \n \n \n \n\n\n\n\n\n\nQuarto automatically applies some data processing to the content of the tables it renders. By default, tinytable disables this processing, because it can enter in conflict with styling and formatting features of the package.\nTo enable Quarto data processing, we can use the quarto argument of the format_tt() function. This argument allows users to mark certain cells explicitly for processing by Quarto, by wrapping them in a special “span” called “data-qmd”, supported by Quarto:\n\nk <- data.frame(Thing = \"qwerty\", Citation = \"@Lovelace1842\")\n\ntt(k) |> format_tt(quarto = TRUE)\n\n\n\n \n\n \n \n \n\n\n\nThing\nCitation\n\n\n\n\nqwerty\nLovelace (1842)\n\n\n\n\n \n\n\n\nSome users may want to apply Quarto data processing to all tables. This can be done with themes:\n\ntheme_quarto <- function(x) format_tt(x, quarto = TRUE)\noptions(tinytable_tt_theme = theme_quarto)\n\ntt(k)\n\n\n\n \n\n \n \n \n\n\n\nThing\nCitation\n\n\n\n\nqwerty\nLovelace (1842)\n\n\n\n\n \n\n\n\nBack to normal:\n\noptions(tinytable_tt_theme = NULL)\n\nAlternatively, users can set a global option to process all tables in Quarto, but they will then have to mark each cell with special content using format_tt(quarto):\n\noptions(tinytable_quarto_disable_processing = FALSE)\n\ntt(x)\n\n\n\n \n\n \n \n \n\n\n\nmpg\ncyl\ndisp\nhp\ndrat\n\n\n\n\n21.0\n6\n160\n110\n3.90\n\n\n21.0\n6\n160\n110\n3.90\n\n\n22.8\n4\n108\n93\n3.85\n\n\n21.4\n6\n258\n110\n3.08\n\n\n\n\n \n\n\n\nNotice that Quarto is now processing the table, so we lose the default tinytable theme and get the default striped Quarto look.\nBack to normal:\n\noptions(tinytable_quarto_disable_processing = TRUE)", "crumbs": [ "Tutorial (PDF)", "Tutorial", @@ -231,7 +231,7 @@ "href": "vignettes/format.html#numbers-dates-strings-etc.", "title": "Formatting", "section": "", - "text": "The tt() function is minimalist; it’s inteded purpose is simply to draw nice tables. Users who want to format numbers, dates, strings, and other variables in different ways should process their data before supplying it to the tt() table-drawing function. To do so, we can use the format_tt() function supplied by the tinytable.\nIn a very simple case—such as printing 2 significant digits of all numeric variables—we can use the digits argument of tt():\n\ndat <- data.frame(\n w = c(143002.2092, 201399.181, 100188.3883),\n x = c(1.43402, 201.399, 0.134588),\n y = as.Date(sample(1:1000, 3), origin = \"1970-01-01\"),\n z = c(TRUE, TRUE, FALSE))\n\ntt(dat, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143002\n 1.43\n 1971-02-06\n True \n \n \n 201399\n 201.4 \n 1970-04-30\n True \n \n \n 100188\n 0.13\n 1972-02-21\n False\n \n \n \n \n\n\n\nWe can get more fine-grained control over formatting by calling format_tt() after tt(), optionally by specifying the columns to format with j:\n\ntt(dat) |> \n format_tt(\n j = 2:4,\n digits = 1,\n date = \"%B %d %Y\") |>\n format_tt(\n j = 1,\n digits = 2,\n num_mark_big = \" \",\n num_mark_dec = \",\",\n num_fmt = \"decimal\")\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143 002,21\n 1.4\n February 06 1971\n True\n \n \n 201 399,18\n 201.4\n April 30 1970\n True\n \n \n 100 188,39\n 0.1\n February 21 1972\n False\n \n \n \n \n\n\n\nWe can use a regular expression in j to select columns, and the ?sprintf function to format strings, numbers, and to do string interpolation (similar to the glue package, but using Base R):\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.432\n 99T\n \n \n Food: Halloumi\n 201.399\n 7.3B\n \n \n Food: Tofu\n 0.146\n 29M\n \n \n Food: Beans\n 0.003\n 94K\n \n \n \n \n\n\n\nFinally, if you like the format_tt() interface, you can use it directly with numbers, vectors, or data frames:\n\nformat_tt(pi, digits = 1)\n\n[1] \"3\"\n\nformat_tt(dat, digits = 1, num_suffix = TRUE)\n\n a b c\n1 Burger 1 99T\n2 Halloumi 201 7B\n3 Tofu 0.1 29M\n4 Beans 0.003 94K", + "text": "The tt() function is minimalist; it’s inteded purpose is simply to draw nice tables. Users who want to format numbers, dates, strings, and other variables in different ways should process their data before supplying it to the tt() table-drawing function. To do so, we can use the format_tt() function supplied by the tinytable.\nIn a very simple case—such as printing 2 significant digits of all numeric variables—we can use the digits argument of tt():\n\ndat <- data.frame(\n w = c(143002.2092, 201399.181, 100188.3883),\n x = c(1.43402, 201.399, 0.134588),\n y = as.Date(sample(1:1000, 3), origin = \"1970-01-01\"),\n z = c(TRUE, TRUE, FALSE))\n\ntt(dat, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143002\n 1.43\n 1970-03-14\n True \n \n \n 201399\n 201.4 \n 1970-04-07\n True \n \n \n 100188\n 0.13\n 1970-09-16\n False\n \n \n \n \n\n\n\nWe can get more fine-grained control over formatting by calling format_tt() after tt(), optionally by specifying the columns to format with j:\n\ntt(dat) |> \n format_tt(\n j = 2:4,\n digits = 1,\n date = \"%B %d %Y\") |>\n format_tt(\n j = 1,\n digits = 2,\n num_mark_big = \" \",\n num_mark_dec = \",\",\n num_fmt = \"decimal\")\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143 002,21\n 1.4\n March 14 1970\n True\n \n \n 201 399,18\n 201.4\n April 07 1970\n True\n \n \n 100 188,39\n 0.1\n September 16 1970\n False\n \n \n \n \n\n\n\nWe can use a regular expression in j to select columns, and the ?sprintf function to format strings, numbers, and to do string interpolation (similar to the glue package, but using Base R):\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.432\n 99T\n \n \n Food: Halloumi\n 201.399\n 7.3B\n \n \n Food: Tofu\n 0.146\n 29M\n \n \n Food: Beans\n 0.003\n 94K\n \n \n \n \n\n\n\nFinally, if you like the format_tt() interface, you can use it directly with numbers, vectors, or data frames:\n\nformat_tt(pi, digits = 1)\n\n[1] \"3\"\n\nformat_tt(dat, digits = 1, num_suffix = TRUE)\n\n a b c\n1 Burger 1 99T\n2 Halloumi 201 7B\n3 Tofu 0.1 29M\n4 Beans 0.003 94K", "crumbs": [ "Tutorial (PDF)", "Tutorial", @@ -467,7 +467,7 @@ "href": "man/format_tt.html", "title": "tinytable", "section": "", - "text": "This function formats the columns of a data frame based on the column type (logical, date, numeric). It allows various formatting options like significant digits, decimal points, and scientific notation. It also includes custom formatting for date and boolean values. If this function is applied several times to the same cell, the last transformation is retained and the previous calls are ignored, except for the escape argument which can be applied to previously transformed data.\n\n\n\nformat_tt(\n x,\n i = NULL,\n j = NULL,\n digits = getOption(\"tinytable_format_digits\", default = NULL),\n num_fmt = getOption(\"tinytable_format_num_fmt\", default = \"significant\"),\n num_zero = getOption(\"tinytable_format_num_zero\", default = FALSE),\n num_suffix = getOption(\"tinytable_format_num_suffix\", default = FALSE),\n num_mark_big = getOption(\"tinytable_format_num_mark_big\", default = \"\"),\n num_mark_dec = getOption(\"tinytable_format_num_mark_dec\", default = getOption(\"OutDec\",\n default = \".\")),\n date = getOption(\"tinytable_format_date\", default = \"%Y-%m-%d\"),\n bool = getOption(\"tinytable_format_bool\", default = function(column)\n tools::toTitleCase(tolower(column))),\n other = getOption(\"tinytable_format_other\", default = as.character),\n replace = getOption(\"tinytable_format_replace\", default = TRUE),\n escape = getOption(\"tinytable_format_escape\", default = FALSE),\n markdown = getOption(\"tinytable_format_markdown\", default = FALSE),\n quarto = getOption(\"tinytable_format_quarto\", default = FALSE),\n fn = getOption(\"tinytable_format_fn\", default = NULL),\n sprintf = getOption(\"tinytable_format_sprintf\", default = NULL),\n ...\n)\n\n\n\n\n\n\n\nx\n\n\nA data frame or a vector to be formatted.\n\n\n\n\ni\n\n\nRow indices where the formatting should be applied.\n\n\n\n\nj\n\n\nColumn indices where the styling should be applied. Can be:\n\n\nInteger vectors indicating column positions.\n\n\nCharacter vector indicating column names.\n\n\nA single string specifying a Perl-style regular expression used to match column names.\n\n\n\n\n\n\ndigits\n\n\nNumber of significant digits or decimal places.\n\n\n\n\nnum_fmt\n\n\nThe format for numeric values; one of ‘significant’, ‘significant_cell’, ‘decimal’, or ‘scientific’.\n\n\n\n\nnum_zero\n\n\nLogical; if TRUE, trailing zeros are kept in \"decimal\" format (but not in \"significant\" format).\n\n\n\n\nnum_suffix\n\n\nLogical; if TRUE display short numbers with digits significant digits and K (thousands), M (millions), B (billions), or T (trillions) suffixes.\n\n\n\n\nnum_mark_big\n\n\nCharacter to use as a thousands separator.\n\n\n\n\nnum_mark_dec\n\n\nDecimal mark character. Default is the global option ‘OutDec’.\n\n\n\n\ndate\n\n\nA string passed to the format() function, such as \"%Y-%m-%d\". See the \"Details\" section in ?strptime\n\n\n\n\nbool\n\n\nA function to format logical columns. Defaults to title case.\n\n\n\n\nother\n\n\nA function to format columns of other types. Defaults to as.character().\n\n\n\n\nreplace\n\n\nLogical, String or Named list of vectors\n\n\nTRUE: Replace NA by an empty string.\n\n\nFALSE: Print NA as the string \"NA\".\n\n\nString: Replace NA entries by the user-supplied string.\n\n\nNamed list: Replace matching elements of the vectors in the list by theirs names. Example:\n\n\nlist(“-” = c(NA, NaN), “Tiny” = -Inf, “Massive” = Inf)\n\n\n\n\n\n\n\n\nescape\n\n\nLogical or \"latex\" or \"html\". If TRUE, escape special characters to display them as text in the format of the output of a tt() table.\n\n\nIf i and j are both NULL, escape all cells, column names, caption, notes, and spanning labels created by group_tt().\n\n\n\n\n\n\nmarkdown\n\n\nLogical; if TRUE, render markdown syntax in cells. Ex: italicized text is properly italicized in HTML and LaTeX.\n\n\n\n\nquarto\n\n\nLogical. Enable Quarto data processing and wrap cell content in a data-qmd span (HTML) or macro (LaTeX). See warnings in the Global Options section below.\n\n\n\n\nfn\n\n\nFunction for custom formatting. Accepts a vector and returns a character vector of the same length.\n\n\n\n\nsprintf\n\n\nString passed to the ?sprintf function to format numbers or interpolate strings with a user-defined pattern (similar to the glue package, but using Base R).\n\n\n\n\n…\n\n\nAdditional arguments are ignored.\n\n\n\n\n\n\nA data frame with formatted columns.\n\n\n\n\nWhen the x data frame includes row names, tinytable can bind them to the first column (without an empty string string as column name). This global option triggers this behavior:\n\noptions(tinytable_tt_rownames = TRUE)\n\nx <- mtcars[1:3, 1:3]\ntt(x)\n\noptions(tinytable_tt_rownames = FALSE)\n\n\n\nThe format_tt(quarto=TRUE) argument activates Quarto data processing for specific cells. This funcationality comes with a few warnings:\n\n\nCurrently, Quarto provides a LaTeX macro, but it does not appear to do anything with it. References and markdown codes may not be processed as expected in LaTeX.\n\n\nQuarto data processing can enter in conflict with tinytable styling or formatting options. See below for how to disable it.\n\n\noptions(tinytable_quarto_disable_processing = TRUE)\nDisable Quarto processing of cell content. Setting this global option to FALSE may lead to conflicts with some tinytable features, but it also allows use of markdown and Quarto-specific code in table cells, such as cross-references.\n\nx <- data.frame(Math = \"x^2^\", Citation = \"@Lovelace1842\")\nfn <- function(z) sprintf(\"<span data-qmd='%s'></span>\", z)\ntt(x) |> format_tt(i = 1, fn = fn)\n\n\nSee this link for more details: https://quarto.org/docs/authoring/tables.html#disabling-quarto-table-processing\n\n\n\nEXPERIMENTAL options(tinytable_html_mathjax = TRUE) inserts MathJax scripts in the HTML document. Warning: This may conflict with other elements of the page if MathJax is otherwise loaded.\n\n\n\n\n\noptions(tinytable_save_pdf_clean = TRUE) deletes temporary and log files.\n\n\noptions(tinytable_save_pdf_engine = “xelatex”): \"xelatex\", \"pdflatex\", \"lualatex\"\n\n\n\n\n\n\nlibrary(\"tinytable\")\n\ndat <- data.frame(\n a = rnorm(3, mean = 10000),\n b = rnorm(3, 10000))\ntab <- tt(dat)\nformat_tt(tab,\n digits = 2,\n num_mark_dec = \",\",\n num_mark_big = \" \")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n 10 000\n 10 001\n \n \n 9 999\n 9 999\n \n \n 10 001\n 9 999\n \n \n \n \n\n\nk <- tt(data.frame(x = c(0.000123456789, 12.4356789)))\nformat_tt(k, digits = 2, num_fmt = \"significant_cell\")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12\n \n \n \n \n\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1, num_fmt = \"decimal\", num_zero = TRUE) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.4\n 99T\n \n \n Food: Halloumi\n 201.4\n 7.3B\n \n \n Food: Tofu\n 0.1\n 29M\n \n \n Food: Beans\n 0.0\n 94K\n \n \n \n \n\n\ny <- tt(data.frame(x = c(123456789.678, 12435.6789)))\nformat_tt(y, digits=3, num_mark_big=\" \")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 123 456 790\n \n \n 12 436\n \n \n \n \n\n\nx <- tt(data.frame(Text = c(\"_italicized text_\", \"__bold text__\")))\nformat_tt(x, markdown=TRUE)\n\n\n\n \n\n \n \n \n \n \n \n Text\n \n \n \n \n \n italicized text\n \n \n bold text\n \n \n \n \n\n\ntab <- data.frame(a = c(NA, 1, 2), b = c(3, NA, 5))\ntt(tab) |> format_tt(replace = \"-\")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n -\n 3\n \n \n 1\n -\n \n \n 2\n 5\n \n \n \n \n\n\ndat <- data.frame(\n \"LaTeX\" = c(\"Dollars $\", \"Percent %\", \"Underscore _\"),\n \"HTML\" = c(\"<br>\", \"<sup>4</sup>\", \"<emph>blah</emph>\")\n)\ntt(dat) |> format_tt(escape = TRUE) \n\n\n\n \n\n \n \n \n \n \n \n LaTeX\n HTML\n \n \n \n \n \n Dollars $\n <br>\n \n \n Percent %\n <sup>4</sup>\n \n \n Underscore _\n <emph>blah</emph>", + "text": "This function formats the columns of a data frame based on the column type (logical, date, numeric). It allows various formatting options like significant digits, decimal points, and scientific notation. It also includes custom formatting for date and boolean values. If this function is applied several times to the same cell, the last transformation is retained and the previous calls are ignored, except for the escape argument which can be applied to previously transformed data.\n\n\n\nformat_tt(\n x,\n i = NULL,\n j = NULL,\n digits = getOption(\"tinytable_format_digits\", default = NULL),\n num_fmt = getOption(\"tinytable_format_num_fmt\", default = \"significant\"),\n num_zero = getOption(\"tinytable_format_num_zero\", default = FALSE),\n num_suffix = getOption(\"tinytable_format_num_suffix\", default = FALSE),\n num_mark_big = getOption(\"tinytable_format_num_mark_big\", default = \"\"),\n num_mark_dec = getOption(\"tinytable_format_num_mark_dec\", default = getOption(\"OutDec\",\n default = \".\")),\n date = getOption(\"tinytable_format_date\", default = \"%Y-%m-%d\"),\n bool = getOption(\"tinytable_format_bool\", default = function(column)\n tools::toTitleCase(tolower(column))),\n other = getOption(\"tinytable_format_other\", default = as.character),\n replace = getOption(\"tinytable_format_replace\", default = TRUE),\n escape = getOption(\"tinytable_format_escape\", default = FALSE),\n markdown = getOption(\"tinytable_format_markdown\", default = FALSE),\n quarto = getOption(\"tinytable_format_quarto\", default = FALSE),\n fn = getOption(\"tinytable_format_fn\", default = NULL),\n sprintf = getOption(\"tinytable_format_sprintf\", default = NULL),\n ...\n)\n\n\n\n\n\n\n\nx\n\n\nA data frame or a vector to be formatted.\n\n\n\n\ni\n\n\nRow indices where the formatting should be applied.\n\n\n\n\nj\n\n\nColumn indices where the styling should be applied. Can be:\n\n\nInteger vectors indicating column positions.\n\n\nCharacter vector indicating column names.\n\n\nA single string specifying a Perl-style regular expression used to match column names.\n\n\n\n\n\n\ndigits\n\n\nNumber of significant digits or decimal places.\n\n\n\n\nnum_fmt\n\n\nThe format for numeric values; one of ‘significant’, ‘significant_cell’, ‘decimal’, or ‘scientific’.\n\n\n\n\nnum_zero\n\n\nLogical; if TRUE, trailing zeros are kept in \"decimal\" format (but not in \"significant\" format).\n\n\n\n\nnum_suffix\n\n\nLogical; if TRUE display short numbers with digits significant digits and K (thousands), M (millions), B (billions), or T (trillions) suffixes.\n\n\n\n\nnum_mark_big\n\n\nCharacter to use as a thousands separator.\n\n\n\n\nnum_mark_dec\n\n\nDecimal mark character. Default is the global option ‘OutDec’.\n\n\n\n\ndate\n\n\nA string passed to the format() function, such as \"%Y-%m-%d\". See the \"Details\" section in ?strptime\n\n\n\n\nbool\n\n\nA function to format logical columns. Defaults to title case.\n\n\n\n\nother\n\n\nA function to format columns of other types. Defaults to as.character().\n\n\n\n\nreplace\n\n\nLogical, String or Named list of vectors\n\n\nTRUE: Replace NA by an empty string.\n\n\nFALSE: Print NA as the string \"NA\".\n\n\nString: Replace NA entries by the user-supplied string.\n\n\nNamed list: Replace matching elements of the vectors in the list by theirs names. Example:\n\n\nlist(“-” = c(NA, NaN), “Tiny” = -Inf, “Massive” = Inf)\n\n\n\n\n\n\n\n\nescape\n\n\nLogical or \"latex\" or \"html\". If TRUE, escape special characters to display them as text in the format of the output of a tt() table.\n\n\nIf i and j are both NULL, escape all cells, column names, caption, notes, and spanning labels created by group_tt().\n\n\n\n\n\n\nmarkdown\n\n\nLogical; if TRUE, render markdown syntax in cells. Ex: italicized text is properly italicized in HTML and LaTeX.\n\n\n\n\nquarto\n\n\nLogical. Enable Quarto data processing and wrap cell content in a data-qmd span (HTML) or macro (LaTeX). See warnings in the Global Options section below.\n\n\n\n\nfn\n\n\nFunction for custom formatting. Accepts a vector and returns a character vector of the same length.\n\n\n\n\nsprintf\n\n\nString passed to the ?sprintf function to format numbers or interpolate strings with a user-defined pattern (similar to the glue package, but using Base R).\n\n\n\n\n…\n\n\nAdditional arguments are ignored.\n\n\n\n\n\n\nA data frame with formatted columns.\n\n\n\n\nWhen the x data frame includes row names, tinytable can bind them to the first column (without an empty string string as column name). This global option triggers this behavior:\n\noptions(tinytable_tt_rownames = TRUE)\n\nx <- mtcars[1:3, 1:3]\ntt(x)\n\noptions(tinytable_tt_rownames = FALSE)\n\n\n\nThe format_tt(quarto=TRUE) argument activates Quarto data processing for specific cells. This funcationality comes with a few warnings:\n\n\nCurrently, Quarto provides a LaTeX macro, but it does not appear to do anything with it. References and markdown codes may not be processed as expected in LaTeX.\n\n\nQuarto data processing can enter in conflict with tinytable styling or formatting options. See below for how to disable it.\n\n\noptions(tinytable_quarto_disable_processing = TRUE)\nDisable Quarto processing of cell content. Setting this global option to FALSE may lead to conflicts with some tinytable features, but it also allows use of markdown and Quarto-specific code in table cells, such as cross-references.\n\nx <- data.frame(Math = \"x^2^\", Citation = \"@Lovelace1842\")\nfn <- function(z) sprintf(\"<span data-qmd='%s'></span>\", z)\ntt(x) |> format_tt(i = 1, fn = fn)\n\n\nSee this link for more details: https://quarto.org/docs/authoring/tables.html#disabling-quarto-table-processing\n\n\n\nEXPERIMENTAL options(tinytable_html_mathjax = TRUE) inserts MathJax scripts in the HTML document. Warning: This may conflict with other elements of the page if MathJax is otherwise loaded.\n\n\n\n\n\noptions(tinytable_save_pdf_clean = TRUE) deletes temporary and log files.\n\n\noptions(tinytable_save_pdf_engine = “xelatex”): \"xelatex\", \"pdflatex\", \"lualatex\"\n\n\n\n\n\n\nlibrary(\"tinytable\")\n\ndat <- data.frame(\n a = rnorm(3, mean = 10000),\n b = rnorm(3, 10000))\ntab <- tt(dat)\nformat_tt(tab,\n digits = 2,\n num_mark_dec = \",\",\n num_mark_big = \" \")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n 10 000\n 10 000\n \n \n 10 001\n 10 001\n \n \n 10 000\n 9 999\n \n \n \n \n\n\nk <- tt(data.frame(x = c(0.000123456789, 12.4356789)))\nformat_tt(k, digits = 2, num_fmt = \"significant_cell\")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12\n \n \n \n \n\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1, num_fmt = \"decimal\", num_zero = TRUE) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.4\n 99T\n \n \n Food: Halloumi\n 201.4\n 7.3B\n \n \n Food: Tofu\n 0.1\n 29M\n \n \n Food: Beans\n 0.0\n 94K\n \n \n \n \n\n\ny <- tt(data.frame(x = c(123456789.678, 12435.6789)))\nformat_tt(y, digits=3, num_mark_big=\" \")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 123 456 790\n \n \n 12 436\n \n \n \n \n\n\nx <- tt(data.frame(Text = c(\"_italicized text_\", \"__bold text__\")))\nformat_tt(x, markdown=TRUE)\n\n\n\n \n\n \n \n \n \n \n \n Text\n \n \n \n \n \n italicized text\n \n \n bold text\n \n \n \n \n\n\ntab <- data.frame(a = c(NA, 1, 2), b = c(3, NA, 5))\ntt(tab) |> format_tt(replace = \"-\")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n -\n 3\n \n \n 1\n -\n \n \n 2\n 5\n \n \n \n \n\n\ndat <- data.frame(\n \"LaTeX\" = c(\"Dollars $\", \"Percent %\", \"Underscore _\"),\n \"HTML\" = c(\"<br>\", \"<sup>4</sup>\", \"<emph>blah</emph>\")\n)\ntt(dat) |> format_tt(escape = TRUE) \n\n\n\n \n\n \n \n \n \n \n \n LaTeX\n HTML\n \n \n \n \n \n Dollars $\n <br>\n \n \n Percent %\n <sup>4</sup>\n \n \n Underscore _\n <emph>blah</emph>", "crumbs": [ "Tutorial (PDF)", "Functions", @@ -479,7 +479,7 @@ "href": "man/format_tt.html#format-columns-of-a-data-frame", "title": "tinytable", "section": "", - "text": "This function formats the columns of a data frame based on the column type (logical, date, numeric). It allows various formatting options like significant digits, decimal points, and scientific notation. It also includes custom formatting for date and boolean values. If this function is applied several times to the same cell, the last transformation is retained and the previous calls are ignored, except for the escape argument which can be applied to previously transformed data.\n\n\n\nformat_tt(\n x,\n i = NULL,\n j = NULL,\n digits = getOption(\"tinytable_format_digits\", default = NULL),\n num_fmt = getOption(\"tinytable_format_num_fmt\", default = \"significant\"),\n num_zero = getOption(\"tinytable_format_num_zero\", default = FALSE),\n num_suffix = getOption(\"tinytable_format_num_suffix\", default = FALSE),\n num_mark_big = getOption(\"tinytable_format_num_mark_big\", default = \"\"),\n num_mark_dec = getOption(\"tinytable_format_num_mark_dec\", default = getOption(\"OutDec\",\n default = \".\")),\n date = getOption(\"tinytable_format_date\", default = \"%Y-%m-%d\"),\n bool = getOption(\"tinytable_format_bool\", default = function(column)\n tools::toTitleCase(tolower(column))),\n other = getOption(\"tinytable_format_other\", default = as.character),\n replace = getOption(\"tinytable_format_replace\", default = TRUE),\n escape = getOption(\"tinytable_format_escape\", default = FALSE),\n markdown = getOption(\"tinytable_format_markdown\", default = FALSE),\n quarto = getOption(\"tinytable_format_quarto\", default = FALSE),\n fn = getOption(\"tinytable_format_fn\", default = NULL),\n sprintf = getOption(\"tinytable_format_sprintf\", default = NULL),\n ...\n)\n\n\n\n\n\n\n\nx\n\n\nA data frame or a vector to be formatted.\n\n\n\n\ni\n\n\nRow indices where the formatting should be applied.\n\n\n\n\nj\n\n\nColumn indices where the styling should be applied. Can be:\n\n\nInteger vectors indicating column positions.\n\n\nCharacter vector indicating column names.\n\n\nA single string specifying a Perl-style regular expression used to match column names.\n\n\n\n\n\n\ndigits\n\n\nNumber of significant digits or decimal places.\n\n\n\n\nnum_fmt\n\n\nThe format for numeric values; one of ‘significant’, ‘significant_cell’, ‘decimal’, or ‘scientific’.\n\n\n\n\nnum_zero\n\n\nLogical; if TRUE, trailing zeros are kept in \"decimal\" format (but not in \"significant\" format).\n\n\n\n\nnum_suffix\n\n\nLogical; if TRUE display short numbers with digits significant digits and K (thousands), M (millions), B (billions), or T (trillions) suffixes.\n\n\n\n\nnum_mark_big\n\n\nCharacter to use as a thousands separator.\n\n\n\n\nnum_mark_dec\n\n\nDecimal mark character. Default is the global option ‘OutDec’.\n\n\n\n\ndate\n\n\nA string passed to the format() function, such as \"%Y-%m-%d\". See the \"Details\" section in ?strptime\n\n\n\n\nbool\n\n\nA function to format logical columns. Defaults to title case.\n\n\n\n\nother\n\n\nA function to format columns of other types. Defaults to as.character().\n\n\n\n\nreplace\n\n\nLogical, String or Named list of vectors\n\n\nTRUE: Replace NA by an empty string.\n\n\nFALSE: Print NA as the string \"NA\".\n\n\nString: Replace NA entries by the user-supplied string.\n\n\nNamed list: Replace matching elements of the vectors in the list by theirs names. Example:\n\n\nlist(“-” = c(NA, NaN), “Tiny” = -Inf, “Massive” = Inf)\n\n\n\n\n\n\n\n\nescape\n\n\nLogical or \"latex\" or \"html\". If TRUE, escape special characters to display them as text in the format of the output of a tt() table.\n\n\nIf i and j are both NULL, escape all cells, column names, caption, notes, and spanning labels created by group_tt().\n\n\n\n\n\n\nmarkdown\n\n\nLogical; if TRUE, render markdown syntax in cells. Ex: italicized text is properly italicized in HTML and LaTeX.\n\n\n\n\nquarto\n\n\nLogical. Enable Quarto data processing and wrap cell content in a data-qmd span (HTML) or macro (LaTeX). See warnings in the Global Options section below.\n\n\n\n\nfn\n\n\nFunction for custom formatting. Accepts a vector and returns a character vector of the same length.\n\n\n\n\nsprintf\n\n\nString passed to the ?sprintf function to format numbers or interpolate strings with a user-defined pattern (similar to the glue package, but using Base R).\n\n\n\n\n…\n\n\nAdditional arguments are ignored.\n\n\n\n\n\n\nA data frame with formatted columns.\n\n\n\n\nWhen the x data frame includes row names, tinytable can bind them to the first column (without an empty string string as column name). This global option triggers this behavior:\n\noptions(tinytable_tt_rownames = TRUE)\n\nx <- mtcars[1:3, 1:3]\ntt(x)\n\noptions(tinytable_tt_rownames = FALSE)\n\n\n\nThe format_tt(quarto=TRUE) argument activates Quarto data processing for specific cells. This funcationality comes with a few warnings:\n\n\nCurrently, Quarto provides a LaTeX macro, but it does not appear to do anything with it. References and markdown codes may not be processed as expected in LaTeX.\n\n\nQuarto data processing can enter in conflict with tinytable styling or formatting options. See below for how to disable it.\n\n\noptions(tinytable_quarto_disable_processing = TRUE)\nDisable Quarto processing of cell content. Setting this global option to FALSE may lead to conflicts with some tinytable features, but it also allows use of markdown and Quarto-specific code in table cells, such as cross-references.\n\nx <- data.frame(Math = \"x^2^\", Citation = \"@Lovelace1842\")\nfn <- function(z) sprintf(\"<span data-qmd='%s'></span>\", z)\ntt(x) |> format_tt(i = 1, fn = fn)\n\n\nSee this link for more details: https://quarto.org/docs/authoring/tables.html#disabling-quarto-table-processing\n\n\n\nEXPERIMENTAL options(tinytable_html_mathjax = TRUE) inserts MathJax scripts in the HTML document. Warning: This may conflict with other elements of the page if MathJax is otherwise loaded.\n\n\n\n\n\noptions(tinytable_save_pdf_clean = TRUE) deletes temporary and log files.\n\n\noptions(tinytable_save_pdf_engine = “xelatex”): \"xelatex\", \"pdflatex\", \"lualatex\"\n\n\n\n\n\n\nlibrary(\"tinytable\")\n\ndat <- data.frame(\n a = rnorm(3, mean = 10000),\n b = rnorm(3, 10000))\ntab <- tt(dat)\nformat_tt(tab,\n digits = 2,\n num_mark_dec = \",\",\n num_mark_big = \" \")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n 10 000\n 10 001\n \n \n 9 999\n 9 999\n \n \n 10 001\n 9 999\n \n \n \n \n\n\nk <- tt(data.frame(x = c(0.000123456789, 12.4356789)))\nformat_tt(k, digits = 2, num_fmt = \"significant_cell\")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12\n \n \n \n \n\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1, num_fmt = \"decimal\", num_zero = TRUE) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.4\n 99T\n \n \n Food: Halloumi\n 201.4\n 7.3B\n \n \n Food: Tofu\n 0.1\n 29M\n \n \n Food: Beans\n 0.0\n 94K\n \n \n \n \n\n\ny <- tt(data.frame(x = c(123456789.678, 12435.6789)))\nformat_tt(y, digits=3, num_mark_big=\" \")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 123 456 790\n \n \n 12 436\n \n \n \n \n\n\nx <- tt(data.frame(Text = c(\"_italicized text_\", \"__bold text__\")))\nformat_tt(x, markdown=TRUE)\n\n\n\n \n\n \n \n \n \n \n \n Text\n \n \n \n \n \n italicized text\n \n \n bold text\n \n \n \n \n\n\ntab <- data.frame(a = c(NA, 1, 2), b = c(3, NA, 5))\ntt(tab) |> format_tt(replace = \"-\")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n -\n 3\n \n \n 1\n -\n \n \n 2\n 5\n \n \n \n \n\n\ndat <- data.frame(\n \"LaTeX\" = c(\"Dollars $\", \"Percent %\", \"Underscore _\"),\n \"HTML\" = c(\"<br>\", \"<sup>4</sup>\", \"<emph>blah</emph>\")\n)\ntt(dat) |> format_tt(escape = TRUE) \n\n\n\n \n\n \n \n \n \n \n \n LaTeX\n HTML\n \n \n \n \n \n Dollars $\n <br>\n \n \n Percent %\n <sup>4</sup>\n \n \n Underscore _\n <emph>blah</emph>", + "text": "This function formats the columns of a data frame based on the column type (logical, date, numeric). It allows various formatting options like significant digits, decimal points, and scientific notation. It also includes custom formatting for date and boolean values. If this function is applied several times to the same cell, the last transformation is retained and the previous calls are ignored, except for the escape argument which can be applied to previously transformed data.\n\n\n\nformat_tt(\n x,\n i = NULL,\n j = NULL,\n digits = getOption(\"tinytable_format_digits\", default = NULL),\n num_fmt = getOption(\"tinytable_format_num_fmt\", default = \"significant\"),\n num_zero = getOption(\"tinytable_format_num_zero\", default = FALSE),\n num_suffix = getOption(\"tinytable_format_num_suffix\", default = FALSE),\n num_mark_big = getOption(\"tinytable_format_num_mark_big\", default = \"\"),\n num_mark_dec = getOption(\"tinytable_format_num_mark_dec\", default = getOption(\"OutDec\",\n default = \".\")),\n date = getOption(\"tinytable_format_date\", default = \"%Y-%m-%d\"),\n bool = getOption(\"tinytable_format_bool\", default = function(column)\n tools::toTitleCase(tolower(column))),\n other = getOption(\"tinytable_format_other\", default = as.character),\n replace = getOption(\"tinytable_format_replace\", default = TRUE),\n escape = getOption(\"tinytable_format_escape\", default = FALSE),\n markdown = getOption(\"tinytable_format_markdown\", default = FALSE),\n quarto = getOption(\"tinytable_format_quarto\", default = FALSE),\n fn = getOption(\"tinytable_format_fn\", default = NULL),\n sprintf = getOption(\"tinytable_format_sprintf\", default = NULL),\n ...\n)\n\n\n\n\n\n\n\nx\n\n\nA data frame or a vector to be formatted.\n\n\n\n\ni\n\n\nRow indices where the formatting should be applied.\n\n\n\n\nj\n\n\nColumn indices where the styling should be applied. Can be:\n\n\nInteger vectors indicating column positions.\n\n\nCharacter vector indicating column names.\n\n\nA single string specifying a Perl-style regular expression used to match column names.\n\n\n\n\n\n\ndigits\n\n\nNumber of significant digits or decimal places.\n\n\n\n\nnum_fmt\n\n\nThe format for numeric values; one of ‘significant’, ‘significant_cell’, ‘decimal’, or ‘scientific’.\n\n\n\n\nnum_zero\n\n\nLogical; if TRUE, trailing zeros are kept in \"decimal\" format (but not in \"significant\" format).\n\n\n\n\nnum_suffix\n\n\nLogical; if TRUE display short numbers with digits significant digits and K (thousands), M (millions), B (billions), or T (trillions) suffixes.\n\n\n\n\nnum_mark_big\n\n\nCharacter to use as a thousands separator.\n\n\n\n\nnum_mark_dec\n\n\nDecimal mark character. Default is the global option ‘OutDec’.\n\n\n\n\ndate\n\n\nA string passed to the format() function, such as \"%Y-%m-%d\". See the \"Details\" section in ?strptime\n\n\n\n\nbool\n\n\nA function to format logical columns. Defaults to title case.\n\n\n\n\nother\n\n\nA function to format columns of other types. Defaults to as.character().\n\n\n\n\nreplace\n\n\nLogical, String or Named list of vectors\n\n\nTRUE: Replace NA by an empty string.\n\n\nFALSE: Print NA as the string \"NA\".\n\n\nString: Replace NA entries by the user-supplied string.\n\n\nNamed list: Replace matching elements of the vectors in the list by theirs names. Example:\n\n\nlist(“-” = c(NA, NaN), “Tiny” = -Inf, “Massive” = Inf)\n\n\n\n\n\n\n\n\nescape\n\n\nLogical or \"latex\" or \"html\". If TRUE, escape special characters to display them as text in the format of the output of a tt() table.\n\n\nIf i and j are both NULL, escape all cells, column names, caption, notes, and spanning labels created by group_tt().\n\n\n\n\n\n\nmarkdown\n\n\nLogical; if TRUE, render markdown syntax in cells. Ex: italicized text is properly italicized in HTML and LaTeX.\n\n\n\n\nquarto\n\n\nLogical. Enable Quarto data processing and wrap cell content in a data-qmd span (HTML) or macro (LaTeX). See warnings in the Global Options section below.\n\n\n\n\nfn\n\n\nFunction for custom formatting. Accepts a vector and returns a character vector of the same length.\n\n\n\n\nsprintf\n\n\nString passed to the ?sprintf function to format numbers or interpolate strings with a user-defined pattern (similar to the glue package, but using Base R).\n\n\n\n\n…\n\n\nAdditional arguments are ignored.\n\n\n\n\n\n\nA data frame with formatted columns.\n\n\n\n\nWhen the x data frame includes row names, tinytable can bind them to the first column (without an empty string string as column name). This global option triggers this behavior:\n\noptions(tinytable_tt_rownames = TRUE)\n\nx <- mtcars[1:3, 1:3]\ntt(x)\n\noptions(tinytable_tt_rownames = FALSE)\n\n\n\nThe format_tt(quarto=TRUE) argument activates Quarto data processing for specific cells. This funcationality comes with a few warnings:\n\n\nCurrently, Quarto provides a LaTeX macro, but it does not appear to do anything with it. References and markdown codes may not be processed as expected in LaTeX.\n\n\nQuarto data processing can enter in conflict with tinytable styling or formatting options. See below for how to disable it.\n\n\noptions(tinytable_quarto_disable_processing = TRUE)\nDisable Quarto processing of cell content. Setting this global option to FALSE may lead to conflicts with some tinytable features, but it also allows use of markdown and Quarto-specific code in table cells, such as cross-references.\n\nx <- data.frame(Math = \"x^2^\", Citation = \"@Lovelace1842\")\nfn <- function(z) sprintf(\"<span data-qmd='%s'></span>\", z)\ntt(x) |> format_tt(i = 1, fn = fn)\n\n\nSee this link for more details: https://quarto.org/docs/authoring/tables.html#disabling-quarto-table-processing\n\n\n\nEXPERIMENTAL options(tinytable_html_mathjax = TRUE) inserts MathJax scripts in the HTML document. Warning: This may conflict with other elements of the page if MathJax is otherwise loaded.\n\n\n\n\n\noptions(tinytable_save_pdf_clean = TRUE) deletes temporary and log files.\n\n\noptions(tinytable_save_pdf_engine = “xelatex”): \"xelatex\", \"pdflatex\", \"lualatex\"\n\n\n\n\n\n\nlibrary(\"tinytable\")\n\ndat <- data.frame(\n a = rnorm(3, mean = 10000),\n b = rnorm(3, 10000))\ntab <- tt(dat)\nformat_tt(tab,\n digits = 2,\n num_mark_dec = \",\",\n num_mark_big = \" \")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n 10 000\n 10 000\n \n \n 10 001\n 10 001\n \n \n 10 000\n 9 999\n \n \n \n \n\n\nk <- tt(data.frame(x = c(0.000123456789, 12.4356789)))\nformat_tt(k, digits = 2, num_fmt = \"significant_cell\")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12\n \n \n \n \n\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1, num_fmt = \"decimal\", num_zero = TRUE) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.4\n 99T\n \n \n Food: Halloumi\n 201.4\n 7.3B\n \n \n Food: Tofu\n 0.1\n 29M\n \n \n Food: Beans\n 0.0\n 94K\n \n \n \n \n\n\ny <- tt(data.frame(x = c(123456789.678, 12435.6789)))\nformat_tt(y, digits=3, num_mark_big=\" \")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 123 456 790\n \n \n 12 436\n \n \n \n \n\n\nx <- tt(data.frame(Text = c(\"_italicized text_\", \"__bold text__\")))\nformat_tt(x, markdown=TRUE)\n\n\n\n \n\n \n \n \n \n \n \n Text\n \n \n \n \n \n italicized text\n \n \n bold text\n \n \n \n \n\n\ntab <- data.frame(a = c(NA, 1, 2), b = c(3, NA, 5))\ntt(tab) |> format_tt(replace = \"-\")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n -\n 3\n \n \n 1\n -\n \n \n 2\n 5\n \n \n \n \n\n\ndat <- data.frame(\n \"LaTeX\" = c(\"Dollars $\", \"Percent %\", \"Underscore _\"),\n \"HTML\" = c(\"<br>\", \"<sup>4</sup>\", \"<emph>blah</emph>\")\n)\ntt(dat) |> format_tt(escape = TRUE) \n\n\n\n \n\n \n \n \n \n \n \n LaTeX\n HTML\n \n \n \n \n \n Dollars $\n <br>\n \n \n Percent %\n <sup>4</sup>\n \n \n Underscore _\n <emph>blah</emph>", "crumbs": [ "Tutorial (PDF)", "Functions", diff --git a/vignettes/custom.html b/vignettes/custom.html index 97144809..4df2ba18 100644 --- a/vignettes/custom.html +++ b/vignettes/custom.html @@ -423,15 +423,15 @@

Bootstrap classes

-
+
@@ -535,15 +535,15 @@

Bootstrap classes

-
+
@@ -648,15 +648,15 @@

Bootstrap classes

-
+
@@ -764,15 +764,15 @@

CSS declarations

-
+
@@ -926,15 +926,15 @@

CSS rules

-
+
@@ -1091,15 +1091,15 @@

CSS rules

-
+
diff --git a/vignettes/format.html b/vignettes/format.html index ad915d2f..7d4ba377 100644 --- a/vignettes/format.html +++ b/vignettes/format.html @@ -441,15 +441,15 @@

Numbers, dates,
-

+
@@ -514,19 +514,19 @@

Numbers, dates,

- + - + - + @@ -552,15 +552,15 @@

Numbers, dates,
-

143002 1.431971-02-061970-03-14 True
201399 201.4 1970-04-301970-04-07 True
100188 0.131972-02-211970-09-16 False
+
@@ -625,19 +625,19 @@

Numbers, dates,

- + - + - + @@ -660,15 +660,15 @@

Numbers, dates,
-

143 002,21 1.4February 06 1971March 14 1970 True
201 399,18 201.4April 30 1970April 07 1970 True
100 188,39 0.1February 21 1972September 16 1970 False
+
@@ -781,15 +781,15 @@

Significan
-

+
@@ -867,15 +867,15 @@

Significan
-

+
@@ -955,15 +955,15 @@

Significan
-

+
@@ -1046,15 +1046,15 @@

Replacement

-
+
@@ -1136,15 +1136,15 @@

Replacement

-
+
@@ -1226,15 +1226,15 @@

Replacement

-
+
@@ -1321,15 +1321,15 @@

Replacement

-
+
@@ -1430,15 +1430,15 @@

Escape special c
-

+
@@ -1540,15 +1540,15 @@

Markdown

-
+
@@ -1666,15 +1666,15 @@

Markdown

-
+

Vincent sometimes contributes to these R packages.

@@ -1796,15 +1796,15 @@

Custom functions

-

Vincent sometimes contributes to these R packages.

+
@@ -1923,15 +1923,15 @@

Custom functions

-
+
@@ -2041,15 +2041,15 @@

Quarto data process
-

+
@@ -2129,15 +2129,15 @@

Quarto data process
-

Thing
+
@@ -2220,15 +2220,15 @@

Quarto data process
-

Thing
+
diff --git a/vignettes/group.html b/vignettes/group.html index d75e461b..9e5aafa6 100644 --- a/vignettes/group.html +++ b/vignettes/group.html @@ -416,15 +416,15 @@

Rows

-
mpg
+
@@ -617,15 +617,15 @@

Rows

-
+
@@ -765,15 +765,15 @@

Rows

-
+
@@ -912,15 +912,15 @@

Rows

-
+
@@ -1070,15 +1070,15 @@

Rows

-
+
@@ -1288,15 +1288,15 @@

Columns

-
+
@@ -1506,15 +1506,15 @@

Columns

-
Hamburgers
+
@@ -1755,15 +1755,15 @@

Columns

-
Hamburgers
+
diff --git a/vignettes/plot.html b/vignettes/plot.html index 47ef00bc..49d6cb72 100644 --- a/vignettes/plot.html +++ b/vignettes/plot.html @@ -427,15 +427,15 @@

Inserting image
-

Hello
+
@@ -520,15 +520,15 @@

Inserting image
-

+
@@ -643,15 +643,15 @@

Built-in plots

-
+
@@ -726,24 +726,24 @@

Built-in plots

- - - - + + + + - - - - + + + + - - - - + + + +
mpg
hp
qsec
@@ -772,15 +772,15 @@

Custom plots: Base
- +
@@ -842,15 +842,15 @@

Custom plots: Base

- + - + - +
mpg
hp
qsec
@@ -883,15 +883,15 @@

Custom plots: g
- +
@@ -953,15 +953,15 @@

Custom plots: g

- + - + - +
mpg
hp
qsec
@@ -1010,15 +1010,15 @@

Custom plots: g
- +
@@ -1092,21 +1092,21 @@

Custom plots: g

- - - + + + - - - + + + - - - + + +
Adelie
Chinstrap
Gentoo
@@ -1128,15 +1128,15 @@

Fontawesome

- +
diff --git a/vignettes/style.html b/vignettes/style.html index 4698b9b1..97d1bf03 100644 --- a/vignettes/style.html +++ b/vignettes/style.html @@ -445,15 +445,15 @@

Cells, rows, columns
-

+
@@ -572,15 +572,15 @@

Cells, rows, columns
-

+
@@ -694,15 +694,15 @@

Cells, rows, columns
-

+
@@ -816,15 +816,15 @@

Cells, rows, columns
-

+
@@ -938,15 +938,15 @@

Cells, rows, columns
-

+
@@ -1060,15 +1060,15 @@

Cells, rows, columns
-

+
@@ -1179,15 +1179,15 @@

Cells, rows, columns
-

+
@@ -1301,15 +1301,15 @@

Cells, rows, columns
-

+
@@ -1425,15 +1425,15 @@

Cells, rows, columns
-

+
@@ -1573,15 +1573,15 @@

Colors

-
+
@@ -1704,15 +1704,15 @@

Alignment

-
+
@@ -1808,15 +1808,15 @@

Alignment

-
+
@@ -1938,15 +1938,15 @@

Alignment

-
+
@@ -2043,15 +2043,15 @@

Font size

-
+
@@ -2176,15 +2176,15 @@

Spanning cell
-

+
@@ -2299,15 +2299,15 @@

Spanning cell
-

+
@@ -2424,15 +2424,15 @@

Spanning cell
-

+
@@ -2554,15 +2554,15 @@

Headers

-
+
@@ -2659,15 +2659,15 @@

Headers

-
+
@@ -2781,15 +2781,15 @@

Headers

-
+
@@ -2912,15 +2912,15 @@

Conditional styling
-

+
@@ -3060,15 +3060,15 @@

Vectorized sty
-

+
@@ -3216,15 +3216,15 @@

Vectorized sty
-

+
@@ -3367,15 +3367,15 @@

Vectorized sty
-

+
@@ -3694,15 +3694,15 @@

Lines (borders)

-
+
@@ -3809,15 +3809,15 @@

Lines (borders)

-
+
@@ -3946,15 +3946,15 @@

Lines (borders)

-
+
@@ -4041,15 +4041,15 @@

Cell padding
-

+
diff --git a/vignettes/theme.html b/vignettes/theme.html index b08ba842..6625e812 100644 --- a/vignettes/theme.html +++ b/vignettes/theme.html @@ -415,15 +415,15 @@

Visual themes

-
+
@@ -625,15 +625,15 @@

Visual themes

-
+
@@ -938,15 +938,15 @@

Custom themes

-
Always use the same caption.
+
diff --git a/vignettes/tinytable.html b/vignettes/tinytable.html index 8b5284bb..9d589f5a 100644 --- a/vignettes/tinytable.html +++ b/vignettes/tinytable.html @@ -419,15 +419,15 @@

Tiny Tables

-
Always use the same caption.
+
@@ -533,15 +533,15 @@

Width

-
+
@@ -644,15 +644,15 @@

Width

-
+
@@ -756,15 +756,15 @@

Width

-
+
@@ -918,15 +918,15 @@

Width

-
+
@@ -1085,15 +1085,15 @@

Width

-
+
@@ -1175,15 +1175,15 @@

Footnotes

-
+

A full-width table with wrapped text in cells and a footnote.

@@ -1260,15 +1260,15 @@

Footnotes

-

A full-width table with wrapped text in cells and a footnote.

+
@@ -1377,15 +1377,15 @@

Footnotes

-
+
@@ -1510,15 +1510,15 @@

Captions and
-

+
@@ -1655,15 +1655,15 @@

Math

-
+
@@ -1758,15 +1758,15 @@

Line breaks
-

+
@@ -1922,15 +1922,15 @@

Combination an
-

+
@@ -2028,15 +2028,15 @@

Combination an
-

+
@@ -2120,15 +2120,15 @@

Combination an
-

+
@@ -2243,15 +2243,15 @@

Combination an
-

Combine two tiny tables.
+
@@ -2370,15 +2370,15 @@

Combination an
-

Combine two tiny tables.
+
@@ -2489,15 +2489,15 @@

Combination an
-

Combine two tiny tables.
+
diff --git a/vignettes/tinytable_assets/id0qw0pksvysm9hq577v3r.png b/vignettes/tinytable_assets/id0qw0pksvysm9hq577v3r.png new file mode 100644 index 0000000000000000000000000000000000000000..0e9656bb267d9baf153edd9f92ec0ccfba89d90b GIT binary patch literal 1127 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+fQVH-0an+J$aM59?uCDIv z?Ck35nlWR>%$YOir!%~J_wN1s_y3nN{Qv*|+%+Q;paK6pT^vIy=DfXpoA;1|0LwvE z=4TV@_boZVe&W$Ct)_`?w)zQ`#a|d6d~e}nbZTc<=-hBY(cy)FLJ5a}6$^(f6HvIA zJ?#4oOUCZmH|HOCRJQQ&FWgFTm@q1g8LFdUG8!f**$hX5_m;?5b_h`Y&g2R`A> zd7JP4JNUEeOOt=hd3XIEC!T$N|8w$r{e1iB+n=a+%-;hnIT$=${an^LB{Ts5AWTbI literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id0th6s0nxrxh8zib118ew.png b/vignettes/tinytable_assets/id0th6s0nxrxh8zib118ew.png new file mode 100644 index 0000000000000000000000000000000000000000..8eaafeb9f170fad97d9a846acb7cba6bebb3dc7e GIT binary patch literal 1829 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+fG6?Vqan+J$aMWUO(P8lR z_6`gTtgf!^?Ck97>Y6cQ#>|;B=chBgd-v|kJceJte*Is{@c;k+H5-4$F)*-g@N{tu zshIQj^66aBKn9nChBuxi^ZZQrX39VKDB|+7FxLw~uVd;P{@*M8&hX$dr!1dBiABSO zhYU{b%p7Q(g1r|j_y6{*c(ZF?KxNfF5bM{^*{9a8FTc;(&uObt5;jVVhQVk$7|jNw zMZpLv31hE|Yx$oC)d8{jCHLO%6PDZkPL83*X5nGR7Cv?XD;b9u1q|q%b=T$RA3Xhi sxA>p#_xk1fKh)RTy|0;ce*a(AU-N@4Wt=(#f%P7Pr>mdKI;Vst0K#MNOaK4? literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id0vsrlzmh133kovveczpl.png b/vignettes/tinytable_assets/id0vsrlzmh133kovveczpl.png new file mode 100644 index 0000000000000000000000000000000000000000..1cfe3c01c20bb9d917fb6f681803a4b5169b01a3 GIT binary patch literal 5073 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 K$0o%2^#1{gI{m-^ literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id2z9ecfxzqc9wwbe6kf6j.png b/vignettes/tinytable_assets/id2z9ecfxzqc9wwbe6kf6j.png new file mode 100644 index 0000000000000000000000000000000000000000..0981e71f874c51f262122c8085ceea6b8a4a0e7b GIT binary patch literal 5057 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 literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id9pdezm9bgwosmt25jb56.png b/vignettes/tinytable_assets/id9pdezm9bgwosmt25jb56.png new file mode 100644 index 0000000000000000000000000000000000000000..80279d32d61766aace7757c19c30139e2ae503e5 GIT binary patch literal 2072 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+fstE82aRt%}3JQjXhDJt4 zwzjtR_Vx}A4lXV(-rnARetsb#A>rZSIXOAGxw%C}MWv;s<>lpFU0pprJu_#{T(M%s z%9ShEuV24m!-g$ewwyV0=F+80w{G2f@ZiCV7cbttdGq$|+jsBYy?_7y!-o&wzJ2@o z^XIQ$zkdJz{r~@eosU5=3=Hhio-U3d6?5KRW}hVBF5nWFB6y-&-=XjK{Q&V5y%DTW ze1iVoV_mje{r}|a2dezv*)dE|FR^I2@Q}f&otZhD<=F1M*K z>fQbRr1e3+pn05g<;o^0m2}PtF#s0;Wu*FCq(rU0#4(bRoFKPjKOKU>bGu z7qoJ1nFmb09Ja16L`J&8CkHP4udVF#f0y@p?XM5B+H5NW;pVOj=}zgQ3(vQl({h^6IXAS$PS|QS9TiT^cKZKzb@rcMGY$h?7$f}4 zU;OT~-^XR#Ud(YH4DLe-n%@r>2_IIyS6$W0uea-Lf4=UQ>-sgTe~DWM4f`Ztzz literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/ida5yx5qpneokch5ycl3mb.png b/vignettes/tinytable_assets/ida5yx5qpneokch5ycl3mb.png new file mode 100644 index 0000000000000000000000000000000000000000..e677d3efdb331f0743be1de69bc447012d5ca717 GIT binary patch literal 12175 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 literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idfmta29o5gssi1u2b7wnv.png b/vignettes/tinytable_assets/idfmta29o5gssi1u2b7wnv.png new file mode 100644 index 0000000000000000000000000000000000000000..37fcdd221832c510aea6d6ba32f71e925ce089f2 GIT binary patch literal 12594 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 literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idk3xtpgnrzu3fz5cbyju7.png b/vignettes/tinytable_assets/idk3xtpgnrzu3fz5cbyju7.png new file mode 100644 index 0000000000000000000000000000000000000000..213bef867cbb32b8585b1686f6174bed4a0a6161 GIT binary patch literal 11877 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%0AdNbE50x{a@ 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 literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idk7inl03vi74igep3vy2b.png b/vignettes/tinytable_assets/idk7inl03vi74igep3vy2b.png new file mode 100644 index 0000000000000000000000000000000000000000..51ac33e121545a4b551927b2fe78037fdd3f6ce7 GIT binary patch literal 15240 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 IIVCg!00q9^&;S4c literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idnl2vj5bt50mlaukfr0dt.png b/vignettes/tinytable_assets/idnl2vj5bt50mlaukfr0dt.png new file mode 100644 index 0000000000000000000000000000000000000000..f4e677bcb026c2131152fb680cfb41832dc2ae84 GIT binary patch literal 2250 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+fstfQ5aRt%>0s?}9f+8X! zIyySW#>OTlCbqV=c6N3S4i1ivj!sTaE-o&Gg@xtiXU?2IfBuRUE7q=E zyMF!pUAuPe-@pIRp+jfRoH=*y+=UAlZrr$W>(;HickkZ2ckllF`_G;|d-3AMyLazC zeE9J5=g;52fB*ga_us#N|NsA2eJV16fq{eF)5S5QV$R#kFE8bW^0r-E+@VpX(JR|j z74qZVe>UB}vabSG&YU}Srs2ATbzh%VerJn$AN!rTp~|V9wS|wHLsm?{N=Kn2!r{e+ zh6{;|3lB4aB<6ja|Go9!-M^)GTwi4FuMK}O{cim6SfH@8u2J#z-7YpENmTXrt2|K>Zl zzU;h{$BWEjXZ@?T+={!GaN1rOr5Ell|9Skp-MY_#TqacV{{8?(M!1zrMQIsrG1vQKkt6GI)26Pc^qHg zf6DxxS`_l#R`At**B9k4_o+Mm1zMkGnYw?P-Jg5} zZ;IWY*N3Km7q&_lo!52YbIZBN*5yiHY!()WJzU9Q>;Ga-XoZ&3`C%;mXa0q3&bjUa zRk{m5b2zP6Es=A4v9;x#GRNL&7b;m6UKg_JSNIa;^jxqd&ijQ;6ZI7Dul>I7g8nY{ zw*P{^Zj0ZQcCcKyzxLi<#wo(PE<`%Ka7t%f$UT>}MXy9mfJy=ny6vz3tS&t+uTrA% zef6t8dyf|Z?=C}VKa?s9wJtm0Ul;p)vOTBlyYD+MJgmc8*`ex0ss-sUabV|#{crw> zJZP_})cLag`vK#>uiaJuJa%Gt6UI_YBf0Ovej9%lBlp#e&A>(pgQu&X%Q~loCIH|} B8%qEH literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/ido5eewl9g3inuurcpr6pq.png b/vignettes/tinytable_assets/ido5eewl9g3inuurcpr6pq.png new file mode 100644 index 0000000000000000000000000000000000000000..fa8a2afc91a3e2ce3e185da6c19afe23505011ed GIT binary patch literal 1728 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+f(hBeian+J$aM59?uCDIv z?Ck35nlWR>%$YOir!&l-KY!V>W$)g-d;k9Z|D_E7|Nj@Lyb;F0z!vD~;uumf=k4X2 zxl9fMtOpr;48#Auv|_b8v#ucA)!@>edFmhDpMA&N@Lkx7g+rF9g^$sxonfJK!v#f$ z7Xk_;90FD>XL@J-es^)>y)%t7cD{>~J$?46dApad?ESpk{@&wx jZM{cVI?A$Ze_`t@uzfh`w8l6u{;uzjhu5?F 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 MEvX;@{$?2Te^F4R`v3p{ literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idrvqfk99pkcv7ms278nz6.png b/vignettes/tinytable_assets/idrvqfk99pkcv7ms278nz6.png new file mode 100644 index 0000000000000000000000000000000000000000..79d2ec079d343f0019c3277ffd9ec92fb9d02e0d GIT binary patch literal 5080 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 Mya#&cVga$-~RV z%g4>fFDxM`A}J-Mpd_WJEUly>qpYT+rK6&2psHu6ZfK%uVxetjrDtVpWMpLJ;p^bw z;1(Y19h)3eT%DMhm|EACR^OhUo}Sa*Uo&e-{k)YO9UYUmA6~Iy#mbc{*WP%xe*O9l z8#e6Ty?f7|JqHdPICkvVjT<-a-Me@H{{46F-hKG+;p4}TKY#xG|NsBWJ@?)-FtBg& zba4!+nDh2>cv(uQfJ?fQoE)-#4~{wifBta6zq|V^^G@fs|9igq zck{1`->-J)ZkPQfKmSiffRnn{i@7a+Q!ZF@&ed30E@Tzx^j@W8QOiBg7cQK8Ctv6k zs#0Gltop@oRN?Rqo|lK?`Cfg0YyRBR>HU{y>Fi&xeVhGRWnp>MM%xEb`rGc$Q6Irc zVVB02`1`xFRFZrj-_yfxnySGovZ-pq7Umw{SXN4OSw8<{K5fkCt9aNECI?(APzU1+s?zhUA2 zeZVZ4&mH^X^Jw^ylYIL7?QQo1GxNM${Tya##>&Rd#ly?P zFCZW+Dj)(xVnX7Q(n=~a%4#wyYO4B1YHDhlCKg(z7TRW3Iu_Qt7B;$;HhNaJ`quWQ zPHqkk4$dKwE-o&vuC6}useV9^m=OpBso8;PIjMDRY4zt=%zm z|LIu=&(5Def5FLX3r}5NeCFozi+5M7Sg~^D%2ih%t-bMV{rdGAHf%U{?AXbZC(oQY zbL-ZvckkYP`0(N5$B$pWeEItI>+j#c|NQy$|Ns9zj^(o%7&zKJT^vIy=DfWeeJM3m z(Cwm=qoAn1>OEJM5C@Sxix+&^AHL_|<<1|)?8af!s(Zw0Hin%`pU?dN`@Few3}0IK z%oR#@FfKgI%ORWR@S=d(sa;yY>Q2LjhipKp4~yFWy;P5`t@@Supg!)yh5x@leO|lo z&-vS{9^YRs&%RIPOV@=+mlvW7H+Njnc1jmq7~XPD$!R^uT-TO3 zL91?#y-Fowf>o|Bbd>0$(4Xt?=K7qkWXupV+&B4h||1anJg?~OF z-^%B&Kp(dZU@(j6mEZmF9F%#C%87tRX-GoZe}uSj54{l)5J z?>#6re-Lf^H$8m5{@1_L{efOx`hG6ZtLE|6z>@L(yT9ks?LlQ^`2Sy1TmSu3Kj8Pj pD(H|uw`|2iPArWB)OJHW!(#8#(;CA=8iCC#22WQ%mvv4FO#pePX9EBL literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idslmddbln8uvfeb4nd8oh.png b/vignettes/tinytable_assets/idslmddbln8uvfeb4nd8oh.png new file mode 100644 index 0000000000000000000000000000000000000000..4c2f4c7179e33a81da0010cfa8baafec48f8d3fb GIT binary patch literal 11951 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 BQ>Xv{ literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idt25k33fyia7xn4cwzwae.png b/vignettes/tinytable_assets/idt25k33fyia7xn4cwzwae.png new file mode 100644 index 0000000000000000000000000000000000000000..b6cc9f629224963722c35431d023f15477b01514 GIT binary patch literal 1846 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+f@(b_@aRt(9YHAJ+4lXV( zuCA_retv<0fq8j(<>lq`=g(iUV#UgpE7z}IzhT3MW5h! zK7Rc8<;$0^U%&qT{rk_KKmY&#|7&pk76Sv@Vow*xkcv5PFMCcBbrWzoc+F;kAg9W^ z`oOmrxYmfb{JlQ+o%#x|?(bh1E56Q?`^%8v|DvGb!b66IhZ&vPnOpeSIb`_+tYj2Q zEF4}G9PsAf#+)pOycz~CS% z!d|@pzv9>5i>CE$7hVE+`Eqy9bgPtD%@h4~zCZ7otB{qf(|o~EVu**q&tJ1w%YJ+^vl-C-s8ph!5~=TR2T97ug*f@Pj{={r*qB~ zSh${Jlo$;InxumX>+9D1`gf84#}@lmzV-K|7ao4C4lc=Y7V%_D#Or;Dm-{RFAh_;t w(!%-*Zj--X*R;$RxB9S%6R8HlV*CgBO>x<$zvO2L0xLiUPgg&ebxsLQ0LD)B!T%r2TuJzaQgp&Gye|)(P-?4p)qZ08?j3!!ZS8&cwfTF_)v{}|V1-{4BK*%Uo_EgrspE!qpJ#6P_h-s({xA-5 z;kESBUspU`xLi77`L+AiT-?{*B(&m&dIx9ix?A<<*z3{_>xx%@>jCns%;$c;|8M?= zb!HM_5GZK7<4xtbGO4{kV=5RquG#sE#Yzjy23%U+RScf4elF{r5}E+Z C(&yj+ literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idvyvpzj04nko38msktbe9.png b/vignettes/tinytable_assets/idvyvpzj04nko38msktbe9.png new file mode 100644 index 0000000000000000000000000000000000000000..d7222e0ff7be019556caf27e3f140f3db2b94f13 GIT binary patch literal 8399 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%0Aj!8!%qU4P>ciTDBteme0g-a_4VxFe5XO?k0U zSqzO2v-#*){$k-h*|(s!H`Im7c@zA%Byd8dOMeGtYqSYEC;5_nz?osM%w0mYe%L#zy8Vw&W{WdcmN8gEpFBG`VjkA~xXzkL70J`UEO zJGCetc*EDVy}>^-zWdPkdYB`%92Ze1mnY|^J>2Qeb>Jlle&+*&@e1^Z@N>E!L z$uTdx-x|B&H#be}ou`HZ+pUu_=awIa;z;*X7@vK6CuuGytzukjL3)&#CJcFJZ_FXjxus-7 zMriuZ@2`dPDjqa^y6o#Ga$nRS3G=8i6YNLg%7HhjdMp7Na%hz`txNY``$8NM3wbXo z!yFcL`a=}o{J|hax)EdHz^H7{vF+;gDOR+by|wwOM5R6#(W8RLxbtQ}TQxI;;(^nV z2(z<=qz5@bmLXiQPtKc7J(o@9yk!`o#4{QeGQym$A1I9NS> z8fI}+)tUMAXN*%8!>(>z7%4(lpH;onjF!I-zSQRsDY>Ux`?N7{m3WzA+=^1^d;o1% zYTj9#+1k;ilwg5NyBQfmkAuHuxB8A-mbbjzFQIZfoIcJt+jNsLa%DYL&`)>nT9S^6 zQNe@D4l7AsmIrMOj>#z>ej{Ae;soD150Et8M{;p`p5!)S&B+EasL~(D|4%q}4{>V4 zTs@E9pFS(~Ayw~pG*nEz*DWI%)%yd$E%+y@^GB{t%A=b7{VbiXBEXQRTb z|1wH2H{SU()?=Bt$=L;a>ENHrOhPcWPz50a)gW(qTYRHW3+q?(UmtqP0wb`seCC~v z5H3tpze-HKS)y};0*r3V(TWRP^YPuZ{xuoF)S9-d-&05X}0M z^Y1MZ_<7GZ#njtPz8`Dn%zlkf5Ru^Xa^Xa6#eEZ1QQZC;aqiHT;MA$1AMmaA62d)n zl-#oR!+RGCXh#qL1k;liQ|nbLF*!TBq(ALknoqH$4k8lzVgSwU!3?-6$(;4b4eOOm zdnHB|I`)aS!VgR9zZ8eY`Hjj_KUlblHy6&liw>}KwVZRml~}KD-6ADKe_J0Pqba;1 zxC|i@5o$}leW&fN^g-m7bOzo;@$AfcU+Q^NUID5_>0RP0u}?@qc>E9Byt5S+b&d(P zQ&p8J<^r5@zUah`qu6$-lgi4~rd$5V*7Za0uL2FpIX8SZ`I)~aoWuytH3Y9dndv1b zNMlf~VZ6o7c+8k>ULX7z{FjV~^=(}!mZorjH2(whTgL*2vm2axu09B1Awj~i;}G4` zFx(E>^1awXGGG0L#K6tsxRWfTl^Ww(uFd~vm%23bsUAI=bdesT@XhrytA*kT`zzviDah-s}2?t1!@0MsFWYjcqOy}51eH@Ru>HxeK`Myn7?f&AH|P%I#02qwbyTW&w_v3SLjnmjuf}g zdzYMsoCTu1IZvOlJ&b*<(nfUf`Y#8l>#x_bwNF1{+3Sca2CDz8N&Gxg?59mtGZgKM z^2XCG`;a=&`wM1I$_2$m>w-p@%)UVZUD39Hi%xAT15@<29R^%S_(cU|4Wmb@_x8Z~ zwcb9yOFMoSztDT}Bu5VRKyfC?;(Fcj1O~VHA z&Hgu;<>+tvhY3zA@TV`CQ@`6#*|!!3uW3vd)cWDK#X+~@$^^_C}x>LVMG(5Baf z-CCV-EiJFY85Xke?W>vO!hX9#lwfgMECKqcp$J|jQ*V`<#${j19A&IBn8!c4@JF6P zg6J4Ombm&2W(~}+^HUyoM{|SfV!sGWss~iZxi_{ayL|DSoLJkvfpfe4Dii5zmFf=m zG&MQOq-xMY^n^RyF8_(Qyz7-5jUO^4X|ciuPq$N!yP49L{=9LdV@!r1{vNt%x_9^3 z$eitN|CsxN+b~>w-#~eE{LbP;L@0?!1sYEN?�&XTjntAGO)YSh%q688qm^|L)yg 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 QF5e=lDyb{h$yGzM1ONa4 literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idzk13d7pf8jzr4yl7kvfn.png b/vignettes/tinytable_assets/idzk13d7pf8jzr4yl7kvfn.png new file mode 100644 index 0000000000000000000000000000000000000000..0ba387fc3e1135765e809dcc4044514a6a01b861 GIT binary patch literal 2564 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
Combine two tiny tables.