Attach a preset_spec to a tabular_spec, carrying page-geometry
knobs (paper, orientation, margins, body font_size + family, h-rule
policy, decimal metric, typography defaults). The engine consults
the per-spec preset first when computing the per-page row budget,
decimal-aligned column widths, and the chrome that the backend
renders around the body grid.
Arguments
- .spec
The spec to attach the preset to.
<tabular_spec | figure_spec>: required. Dot-prefixed so R's partial argument matching cannot accidentally bind a knob name in...to the spec slot.Note: a
figure()spec accepts the page-geometry knobs (paper_size,orientation,margins,font_size,font_family,pagehead,pagefoot, ...) plus the cosmetic surface knobs (alignment/fonts/colors/padding) that target its chrome surfaces, the titles and footnotes, e.g.fonts = list(titles = c(size = 14)). A cosmetic knob that targets a table-only surface (body/header/subgroup), arulesknob (the rules sit on the header band a figure lacks), and the.template/.stylestyle templates are rejected, since a figure has no such surfaces.- ...
Named preset knobs. Any subset of the preset knobs the
preset_specclass carries. Knob values are validated against the class's enum / length / type rules; bad values raisetabular_error_input. Unknown knob names raisetabular_error_inputwith the recognised set listed.Recognised knobs:
font_size— body point size.<numeric(1)>.font_family— body font family.<character | character(1)>. Default"mono". Four accepted shapes:Generic family —
"mono"(default),"serif","sans"(CSS aliases"monospace"/"sans-serif"also recognised). The resolver expands to a per-backend chain that leads with the Microsoft Office face (Courier New / Times New Roman / Arial) — installed on every Windows and macOS machine, where documents are reviewed — then the PostScript legacy name, then the two metric-compatible Linux-server fallbacks: the URW / Nimbus clone (Nimbus Mono PS / Nimbus Roman / Nimbus Sans, ghostscript's Core-35 set shipped on virtually every Linux distro) and the Liberation face (Posit Workbench / Domino / Citrix / RStudio Server), then TeX Gyre for LaTeX compile / the CSS generic for HTML. Every link is metric-compatible with Courier New / TNR / Arial, so layout, line breaks, and decimal alignment hold across every render context regardless of which end of the chain resolves. The mono default matches the dominant submission-TFL convention where deterministic glyph widths driven (%)cell alignment.Named alias —
"Times","Times New Roman","Arial","Helvetica","Courier","Courier New". These PostScript-era names alias to the appropriate generic family (Times -> serif, Arial / Helvetica -> sans, Courier -> mono) and emit the same expanded chain. Honours the user's intent ("I want Times-like rendering") on every OS instead of hard-erroring on a Linux server with no TNR installed.Arbitrary named font —
"Inter","JetBrains Mono","IBM Plex Mono","Source Code Pro", sponsor-specific face, etc. Emitted verbatim with no fallback fabricated. The consuming app (browser, xelatex, Word, LibreOffice) resolves the name against its own font matcher: RTF and DOCX substitute when the name is missing; xelatex hard-errors at compile time if the face is not installed; HTML browsers fall through to the browser's default font (not necessarily class-matched). For a portable result, prefer a generic family (shape 1) or an explicit stack (shape 4).Explicit stack —
c("Inter", "Helvetica", "sans"). User owns the chain. Returned verbatim — alias lookup is bypassed, soc("Times", "Times")honours the exact name with no chain expansion (escape hatch for users who genuinely want exact-name semantics).
Note: tabular bundles no fonts. Because the default chain leads with the Office face, Word's font dropdown shows a face the reader actually has installed on Windows / macOS (e.g. Courier New for
"mono"), not a phantom name; the metric-compatible Nimbus / Liberation faces only appear as the fallback for a headless Linux box.orientation— page orientation.<character(1)>. One of"landscape"(default),"portrait".paper_size— paper key.<character(1)>. One of"letter"(default),"a4".margins— page margins in inches.<numeric(1) | numeric(4)>. Length 1 = all four sides; length 4 = top, right, bottom, left.pagehead,pagefoot— per-page header / footer band content.<list>. Each band is a named list with slots fromleft/center/right; every other slot name is rejected. Each slot acceptsNULL(omit), a character scalar, a character vector (multi-row content), or aninline_ast. Emptylist()(the default) -> no band emitted.Single-row form (scalar slots):
pagehead = list( left = "Protocol: ABC-123", center = "Draft", right = "Page {page} of {npages}" )Multi-row form (vector slots, index-aligned):
pagehead = list( left = c("Protocol: ABC-123", "Analysis Set: Safety"), right = "Page {page} of {npages}" # scalar -> body-edge row )Growth direction. Vector index 1 = body edge; index N = far from body.
pageheadrows stack upward away from the table (the row closest to the table is index 1).pagefootrows stack downward away from the table (the row closest to the table is index 1). Shorter slots pad with""at the FAR end (high index), so a scalar slot naturally lands on the body-edge row.Token vocabulary — substituted into slot text:
Token Phase Expansion {page}backend current page number (field code) {npages}backend total page count (field code) {program}engine calling script's base name {program_path}engine calling script's full path {datetime}engine DDMMMYYYY HH:MM:SSUTC (render time){program},{program_path}, and{datetime}resolve once per render (atas_grid()/emit());{page}and{npages}resolve per page (filled in by Word / xelatex / the browser's print engine at view time). The program tokens walk a 5-mode detection chain — RStudio API,source()frame, Rscript / R CMD BATCH commandArgs (covers Domino + Linux batch + CI), knitr current_input, fallback"<interactive>".rules— the single border vocabulary (replaces the oldbordersknob). String sugar"booktabs"(default, the clinical baseline),"grid","frame","none"; a singlebrdr()broadcast to every active rule; or a named list keyed by the nine rule names (toprule,midrule,bottomrule,spanrule,rowrule,footnoterule,leftrule,rightrule,colrule) — unlisted rules keep their default, and the bare string"none"drops one.rules = list(rowrule = brdr())reproduces the oldhlines = "all".bottomrulevsfootnoterule. These are mutually exclusive: exactly one rule sits at the data -> footnote boundary. The default isbottomrule(the table's bottom edge);footnoterule(a table-width rule opening the footnote section) is OFF by default. As a distinct footnote-section rule,footnoteruleis drawn only by the paginated backends — RTF, LaTeX / PDF, and DOCX. The HTML backend is continuous (non-paginated) and has no separate footnote section, so it folds both into one rule: whichever ofbottomrule/footnoteruleis active becomes the table's bottom edge (bottomrulewins when both are set). Settingfootnoteruletherefore still draws a closing rule on HTML — rendered as thebottomrule.spacing— region-keyed blank-line control. A named list keyed bytitle/body/subgroup/footnote, each a named numericc(above = , below = )(footnote:aboveonly). Default is the one blank line above and below the title block. Two adjoining region-sides that target the same physical gap resolve to the MAX (never the sum), so a gap is never accidentally doubled.stripe— zebra body-row fills. A single colour (applied to even rows) or a namedc(odd = , even = );NULL(default) is off.indent_size— row-label indent width, in monospace- space units.<integer(1)>. Default2L. Each indent level adds this many space-widths of left padding to the cell.0Ldisables the indent prefix entirely. Backends with native padding-left semantics (HTML / LaTeX / RTF / DOCX / PDF) emit this as cell padding so wrapped continuation lines align with the indented baseline; Markdown carries the literal space-prefix. Block alignment for the title / footnote / header / subgroup / body surfaces is set via thealignmentnamed-list knob (alignment = list(title_halign = "left", ...)), not a scalar knob; blank-line spacing is set viaspacing(above).na_text— global NA fallback.<character(1)>.decimal_metrics— decimal-padding metric.<character(1)>."afm"(default) measures glyphs with the bundled Core font metrics, so decimal columns align width-exact in proportional fonts (to within one padding space of rounding; exact in Courier). Afont_familywith no bundled metric table (e.g. a system-installed face such as Courier 10 Pitch) is measured through a temporary graphics device instead, so alignment stays exact whenever the host can resolve the font; only when that also fails does the engine fall back to Times metrics with a fidelity warning."chars"pads by character count — exact in monospaced faces only. Markdown output always pads by character count, the correct geometry for a text medium.decimal_markers— missing-value tokens recognised bycol_spec(align = "decimal").<character>. Defaultc("NR", "NE", "NC", "ND", "BLQ"). A cell whose trimmed value is one of these is treated as a non-numeric marker: it is shown and right-aligned in the column rather than parsed as a number, and a marker appearing inside a compound (e.g. the upper bound of14.3 (11.2, NR)) is preserved and slot-aligned. Excludes"-","NA", and"INF"/"-INF"by default:"-"collides with range separators,"NA"is handled byna_text, and infinities are real values. Set tocharacter(0)to disable marker handling.width_mode— table-level column-sizing policy. Mirrors Word's Table Layout menu.<character(1)>. One of:"content"(default) — Each column auto-sized tomax(body, header). The table doesn't fill the page. Word's "Auto-fit Contents"."window"— Auto-sized columns are scaled proportionally to their natural width to fill the residual page width. Pinned and percent columns keep their pins. Word's "Auto-fit Window"."fixed"— Only explicit per-column widths drive the layout. Auto-sized columns collapse to a minimum sliver. Word's "Fixed Column Width".
Interaction: Pair with
col_spec(width = ...)pins to drive the layout under"window"/"fixed". Under"content", pins still take priority over auto columns.HTML backend.
width_modedrives paper backends (LaTeX / RTF / PDF / DOCX) only. HTML is unconditionally responsive — the table always fills its parent and columns wrap when the viewport narrows, regardless ofwidth_mode. Per-column widths (col_spec(width)) emit verbatim into the HTML colgroup per the gt convention.empty_text— house-style wording for the empty-state message shown when a spec resolves to zero data rows.<character(1)>. The resolution is spec arg -> preset knob -> built-in default: a per-tabletabular(empty_text = ...)wins, else this preset knob (set once viaset_preset()for a whole house style), else the built-in"No data available to report". Glue{}andmd()/html()inline formatting are honoured, exactly like a title line.whitespace— how significant ASCII spaces in labels and cells render.<character(1)>. One of:"preserve"(default) — leading, trailing, and interior runs of 2+ spaces become the backend non-breaking token ( /~/\~; DOCX preserves viaxml:space), so a hand-built indent likecol_spec(label = " Placebo")renders verbatim across every backend. A single interior space stays breakable, so cells still wrap."collapse"— leave the backend's native run-folding in place (HTML / md / LaTeX collapse runs to one space).
Note: never affects
col_spec(align = "decimal")padding, which uses U+00A0 and is preserved unconditionally.chrome_onscreen— whether the on-screen running header / footer bands render in HTML output.<character(1)>. One of:"auto"(default) — thepagehead/pagefootcontent renders as on-screen<header>/<footer>bands."off"— suppress the on-screen bands; the print-time@pagechrome still renders, so print-to-PDF output is unchanged. Useful when the HTML is consumed only via print.
HTML-only; the paged backends (RTF / PDF / DOCX) always emit per-page chrome regardless of this knob.
footnote_markers— the glyph scheme forfootnote()markers, which the engine allocates once in reading order.<character(1)>. One of:"letters"(default) —a,b, …,z,aa,ab, … (bijective base-26)."numbers"—1,2,3, …"symbols"— Lamport's sequence*,†,‡,§,¶,‖, then doubled (**,††, …) once it spills past the sixth.
Interaction: a note's anchor is fixed by
footnote(); its scheme (this knob) and label (footnote_label) are resolved from the active preset at render, so flipping either re-letters every marker at once.footnote_label— block-line template for afootnote()marker.<character(1)>. Default"{m}"; the{m}token is replaced by the allocated marker, so"[{m}]"prints[a]ahead of the note text on the footnote line.cell_padding— cell padding in points, CSS shorthand of length 1 / 2 / 4 (all|vertical horizontal|top right bottom left), parsed by the same length rule asmargins.<numeric>: default c(0, 5.4)(vertical 0, horizontal 5.4pt). The single source of truth for both auto column-width measurement (left + right) and every backend's cell margin, so measured and rendered widths agree.Interaction: A body per-side padding override (
preset(padding = list(body = ...))orstyle(.at = cells_body(), padding = ...)) takes precedence at both measurement and render.Note: DOCX and LaTeX render left / right exactly; RTF (
\\trgaphis one symmetric gap) renders the average, so the total width still matches but the two sides look equal.
- .template
A
preset_specto bulk-apply before....<preset_spec | NULL>: default NULL. When supplied, every knob the template has set away from its factory default feeds in as the base layer; user-supplied...knobs then merge on top. List-valued knobs (rules,fonts,colors,padding,alignment) shallow-merge per key; scalars replace. Use this to layer a house-stylepreset_speconto a chain without restating its knobs.- .style
A
style_template()to layer onto the cascade.<style_template | NULL>: default NULL. When supplied, every layer the template has accumulated viastyle()is replayed in order at engine time, after the per-specstyle()layers on.spec. Use this to attach a sponsor's reusable house style to a chain without restating every per-region rule.- .reset
Discard the spec's existing preset before applying
....<logical(1)>: default FALSE. WhenTRUE, the spec's priorpreset_spec(if any) is dropped and...knobs are merged onto freshpreset_spec()defaults. With no knobs, the per-spec preset is cleared back to NULL (the spec falls through toset_preset()orpreset_spec()defaults).
Value
The updated tabular_spec. Continue chaining with
paginate(), style(), then render via emit() (or
resolve without I/O via as_grid()).
Details
Per-spec, chained. preset() is the per-spec override — a
verb that returns a modified spec, composable on the pipe alongside
cols() / headers() / paginate(). Use it when a single
table needs a one-off geometry (e.g. landscape A4 for one wide
efficacy summary inside a portfolio of portrait letter tables).
Merge, not replace. A second preset() call merges its scalar
knobs onto the spec's existing preset; unspecified knobs keep
their prior value. The five named-list knobs (alignment /
rules / fonts / colors / padding) lower to style_layer
records on preset@style via .preset_args_to_layers()
(internal) and append in call order; layer order is precedence
within the engine cascade, so a later preset() call's lowered
attribute wins over an earlier one at the cell. Pass .reset = TRUE
to discard the existing knobs and start from preset_spec()
defaults. preset(.spec, .reset = TRUE) with no knobs clears the
per-spec override entirely (the spec then falls through to
set_preset() or preset_spec() defaults at render time).
Direct preset_spec() calls bypass lowering. The five
named-list knobs are no longer slots on the preset_spec S7
class — they exist only as preset() / set_preset() arguments
that lower into @style. preset_spec(rules = list(...))
(and analogous direct calls) raise "unused argument". Wrap such
calls in tabular(...) |> preset(...) so the lowering helper
fires and the layers land on @style.
Cascade with set_preset(). The engine resolves the active
preset in this order: (1) the spec's per-call preset (this verb),
(2) the session default attached via set_preset(),
(3) preset_spec() factory defaults. The first non-NULL layer
wins; layers are not field-merged across the cascade.
See also
Session-scope partners: set_preset(), get_preset().
Render-geometry consumer: paginate() derives the per-page
row budget from the active preset's paper, orientation, margins,
and font size.
Sibling build verbs: cols() / col_spec(),
headers(), sort_rows(), style().
Examples
# ---- Example 1: Landscape A4 for a wide efficacy table ----
#
# BOR table where the four-arm column block fits portrait letter
# with a smaller body font, but the sponsor wants A4 landscape at
# 8pt for visual breathing room. `preset()` attaches the geometry;
# `paginate()` reads it later to size the per-page row budget.
bor_levels <- c(
"CR", "PR", "SD", "NON-CR/NON-PD", "PD", "NE", "MISSING",
"ORR (CR + PR)", "CBR (CR + PR + SD)",
"DCR (CR + PR + SD + NON-CR/NON-PD)", "95% CI (Clopper-Pearson)"
)
eff <- cdisc_eff_resp
eff$stat_label <- factor(eff$stat_label, levels = bor_levels)
ne <- stats::setNames(cdisc_eff_n$n, cdisc_eff_n$arm_short)
tabular(
eff,
titles = c(
"Table 14.2.1",
"Best Overall Response and Response Rates",
"Efficacy Evaluable Population"
),
footnotes = "Response per RECIST 1.1, investigator assessment."
) |>
cols(
stat_label = col_spec(label = "Response"),
row_type = col_spec(visible = FALSE),
groupid = col_spec(visible = FALSE),
group_label = col_spec(visible = FALSE),
placebo = col_spec(label = "Placebo\nN={ne['placebo']}"),
drug_50 = col_spec(label = "Drug 50\nN={ne['drug_50']}"),
drug_100 = col_spec(label = "Drug 100\nN={ne['drug_100']}")
) |>
sort_rows(by = c("groupid", "stat_label")) |>
preset(
orientation = "landscape",
paper_size = "a4",
font_size = 8
) |>
paginate()
Table 14.2.1
Best Overall Response and Response Rates
Efficacy Evaluable Population
Response Placebo
N=86 Drug 50
N=84 Drug 100
N=84 CR 1 (1.2) 1 (1.2) 1 (1.2) PR 1 (1.2) 0 0 SD 1 (1.2) 0 0 NON-CR/NON-PD 0 0 1 (1.2) PD 0 0 1 (1.2) NE 0 1 (1.2) 0 MISSING 83 (96.5) 82 (97.6) 81 (96.4) ORR (CR + PR) 2 (2.3) 1 (1.2) 1 (1.2) 95% CI (Clopper-Pearson) (0.3, 8.1) (0.0, 6.5) (0.0, 6.5) CBR (CR + PR + SD) 3 (3.5) 1 (1.2) 1 (1.2) 95% CI (Clopper-Pearson) (0.7, 9.9) (0.0, 6.5) (0.0, 6.5) DCR (CR + PR + SD + NON-CR/NON-PD) 3 (3.5) 1 (1.2) 2 (2.4) 95% CI (Clopper-Pearson) (0.7, 9.9) (0.0, 6.5) (0.3, 8.3)
Response per RECIST 1.1, investigator assessment.
# ---- Example 2: Per-spec override with per-page chrome ----
#
# The submission session sets a portrait letter 9pt default (typical
# safety-table geometry). One particular AE table needs landscape
# for a long PT label band; the per-spec `preset()` overrides only
# orientation. The same per-spec call wires the canonical
# per-page header band (protocol on the left, page X of Y on the
# right) and a footer band that auto-resolves the calling
# script's name and the current render timestamp via the
# `{program}` and `{datetime}` tokens.
set_preset(font_size = 9, paper_size = "letter")
n <- stats::setNames(cdisc_saf_n$n, cdisc_saf_n$arm_short)
tabular(
cdisc_saf_aesocpt,
titles = c(
"Table 14.3.1",
"Adverse Events by System Organ Class and Preferred Term",
"Safety Population"
),
footnotes = "Subjects are counted once per SOC and once per PT."
) |>
cols(
label = col_spec(label = "SOC / PT", indent = "indent_level"),
.hide = "soc",
row_type = col_spec(visible = FALSE),
soc_n = col_spec(visible = FALSE),
n_total = col_spec(visible = FALSE),
placebo = col_spec(label = "Placebo\nN={n['placebo']}"),
drug_50 = col_spec(label = "Drug 50\nN={n['drug_50']}"),
drug_100 = col_spec(label = "Drug 100\nN={n['drug_100']}"),
Total = col_spec(label = "Total\nN={n['Total']}")
) |>
headers("Treatment Group" = c("placebo", "drug_50", "drug_100", "Total")) |>
sort_rows(by = c("soc_n", "n_total"), descending = c(TRUE, TRUE)) |>
preset(
orientation = "landscape",
pagehead = list(
left = "Protocol: ABC-123",
right = "Page {page} of {npages}"
),
pagefoot = list(
left = "{program}",
right = "{datetime}"
)
) |>
paginate(keep_together = "soc")
Protocol: ABC-123
Page 1 of 3
Table 14.3.1
Adverse Events by System Organ Class and Preferred Term
Safety Population
Treatment Group SOC / PT Placebo
N=86 Drug 50
N=96 Drug 100
N=72 Total
N=254 TOTAL SUBJECTS WITH AN EVENT 52 (60.5) 81 (84.4) 66 (91.7) 199 (78.3) SKIN AND SUBCUTANEOUS TISSUE DISORDERS 19 (22.1) 36 (37.5) 35 (48.6) 90 (35.4) PRURITUS 8 (9.3) 21 (21.9) 25 (34.7) 54 (21.3) ERYTHEMA 8 (9.3) 14 (14.6) 14 (19.4) 36 (14.2) RASH 5 (5.8) 13 (13.5) 8 (11.1) 26 (10.2) HYPERHIDROSIS 2 (2.3) 4 (4.2) 8 (11.1) 14 (5.5) SKIN IRRITATION 3 (3.5) 6 (6.2) 5 (6.9) 14 (5.5) GENERAL DISORDERS AND ADMINISTRATION SITE CONDITIONS 15 (17.4) 36 (37.5) 30 (41.7) 81 (31.9) APPLICATION SITE PRURITUS 6 (7.0) 23 (24.0) 21 (29.2) 50 (19.7) APPLICATION SITE ERYTHEMA 3 (3.5) 13 (13.5) 14 (19.4) 30 (11.8) APPLICATION SITE DERMATITIS 5 (5.8) 9 (9.4) 7 (9.7) 21 (8.3) APPLICATION SITE IRRITATION 3 (3.5) 9 (9.4) 9 (12.5) 21 (8.3) APPLICATION SITE VESICLES 1 (1.2) 5 (5.2) 5 (6.9) 11 (4.3) GASTROINTESTINAL DISORDERS 13 (15.1) 12 (12.5) 17 (23.6) 42 (16.5) DIARRHOEA 9 (10.5) 5 (5.2) 3 (4.2) 17 (6.7) VOMITING 3 (3.5) 4 (4.2) 6 (8.3) 13 (5.1) NAUSEA 3 (3.5) 3 (3.1) 6 (8.3) 12 (4.7) ABDOMINAL PAIN 1 (1.2) 3 (3.1) 1 (1.4) 5 (2.0) SALIVARY HYPERSECRETION 0 (0.0) 0 (0.0) 4 (5.6) 4 (1.6) NERVOUS SYSTEM DISORDERS 6 (7.0) 18 (18.8) 17 (23.6) 41 (16.1) DIZZINESS 2 (2.3) 9 (9.4) 10 (13.9) 21 (8.3) HEADACHE 3 (3.5) 3 (3.1) 5 (6.9) 11 (4.3) SYNCOPE 0 (0.0) 5 (5.2) 2 (2.8) 7 (2.8) SOMNOLENCE 2 (2.3) 3 (3.1) 1 (1.4) 6 (2.4) TRANSIENT ISCHAEMIC ATTACK 0 (0.0) 2 (2.1) 1 (1.4) 3 (1.2) CARDIAC DISORDERS 7 (8.1) 12 (12.5) 14 (19.4) 33 (13.0) SINUS BRADYCARDIA 2 (2.3) 7 (7.3) 8 (11.1) 17 (6.7) MYOCARDIAL INFARCTION 4 (4.7) 2 (2.1) 4 (5.6) 10 (3.9) ATRIAL FIBRILLATION 1 (1.2) 2 (2.1) 2 (2.8) 5 (2.0) SUPRAVENTRICULAR EXTRASYSTOLES 1 (1.2) 1 (1.0) 1 (1.4) 3 (1.2) VENTRICULAR EXTRASYSTOLES 0 (0.0) 2 (2.1) 1 (1.4) 3 (1.2) INFECTIONS AND INFESTATIONS 12 (14.0) 6 (6.2) 11 (15.3) 29 (11.4) NASOPHARYNGITIS 2 (2.3) 4 (4.2) 6 (8.3) 12 (4.7) UPPER RESPIRATORY TRACT INFECTION 6 (7.0) 1 (1.0) 3 (4.2) 10 (3.9) INFLUENZA 1 (1.2) 1 (1.0) 1 (1.4) 3 (1.2) URINARY TRACT INFECTION 2 (2.3) 0 (0.0) 1 (1.4) 3 (1.2) CYSTITIS 1 (1.2) 0 (0.0) 1 (1.4) 2 (0.8) RESPIRATORY, THORACIC AND MEDIASTINAL DISORDERS 5 (5.8) 8 (8.3) 9 (12.5) 22 (8.7) COUGH 1 (1.2) 5 (5.2) 5 (6.9) 11 (4.3) NASAL CONGESTION 3 (3.5) 1 (1.0) 3 (4.2) 7 (2.8) DYSPNOEA 1 (1.2) 1 (1.0) 1 (1.4) 3 (1.2) EPISTAXIS 0 (0.0) 1 (1.0) 2 (2.8) 3 (1.2) PHARYNGOLARYNGEAL PAIN 0 (0.0) 1 (1.0) 1 (1.4) 2 (0.8) PSYCHIATRIC DISORDERS 7 (8.1) 9 (9.4) 3 (4.2) 19 (7.5) CONFUSIONAL STATE 2 (2.3) 3 (3.1) 1 (1.4) 6 (2.4) AGITATION 2 (2.3) 3 (3.1) 0 (0.0) 5 (2.0) INSOMNIA 2 (2.3) 0 (0.0) 2 (2.8) 4 (1.6) ANXIETY 0 (0.0) 3 (3.1) 0 (0.0) 3 (1.2) DELUSION 1 (1.2) 0 (0.0) 1 (1.4) 2 (0.8) MUSCULOSKELETAL AND CONNECTIVE TISSUE DISORDERS 3 (3.5) 6 (6.2) 5 (6.9) 14 (5.5) BACK PAIN 1 (1.2) 1 (1.0) 3 (4.2) 5 (2.0) ARTHRALGIA 1 (1.2) 2 (2.1) 1 (1.4) 4 (1.6) SHOULDER PAIN 1 (1.2) 2 (2.1) 0 (0.0) 3 (1.2) MUSCLE SPASMS 0 (0.0) 1 (1.0) 1 (1.4) 2 (0.8) ARTHRITIS 0 (0.0) 0 (0.0) 1 (1.4) 1 (0.4) INVESTIGATIONS 5 (5.8) 4 (4.2) 3 (4.2) 12 (4.7) ELECTROCARDIOGRAM ST SEGMENT DEPRESSION 4 (4.7) 1 (1.0) 0 (0.0) 5 (2.0) ELECTROCARDIOGRAM T WAVE INVERSION 2 (2.3) 1 (1.0) 1 (1.4) 4 (1.6) BLOOD GLUCOSE INCREASED 0 (0.0) 1 (1.0) 1 (1.4) 2 (0.8) ELECTROCARDIOGRAM T WAVE AMPLITUDE DECREASED 1 (1.2) 1 (1.0) 0 (0.0) 2 (0.8) BIOPSY 0 (0.0) 0 (0.0) 1 (1.4) 1 (0.4)
Subjects are counted once per SOC and once per PT.
# Reset the session default so subsequent examples / R sessions
# are not affected.
set_preset(.reset = TRUE)