This function adds one or more titles to an object as a title block. If added to a report, the titles will be added to the page template, and thus appear on each page of the report. Titles may also be added to a table, text, or plot object.

titles(x, ..., align = "center", blank_row = "below", borders = "none")



The object to assign titles to. Valid objects are a report, or a table, text, or plot specification.


A set of title strings.


The position to align the titles. Valid values are 'left', 'right', 'center' or 'centre'. For titles, the default is 'center'.


Where to place a blank row. Valid values are 'above', 'below', 'both', or 'none'. Default is "below".


Whether and where to place a border. Valid values are 'top', 'bottom', 'all', or 'none'. Default is "none".


The modified report.


The titles function accepts a set of strings of the desired title text. To specify multiple titles for the block, pass them to the function as separate strings.

The titles may be aligned center, left or right using the align parameter. The alignment will be applied to all titles contained in the block. To control alignment of titles separately for each title, use multiple titles functions.

Titles may be assigned to a report, a table, a text specification, or a plot. If assigned to the report, the title will appear at the top of the page, and be repeated for every page of the report. If the titles are assigned to content, the titles will appear above the content, and be repeated if the content breaks to the next page.

If titles are assigned to the report, alignment will be oriented to the page body. If titles are assigned to content, alignment will be oriented to the edge of the content.

One title function accepts up to 10 titles. However, multiple title blocks may be added to the same object if needed.

Blank rows above or below the title block may be controlled using the blank_row parameter.

Each title string must fit within the available space. The reporter package will not wrap titles. If a title does not fit within the available space, a warning will be generated and the title will be truncated. In these situations, either shorten the title or split it into multiple titles that each fit within the available space.

See also



# Create a temporary file
tmp <- file.path(tempdir(), "expenses.txt")

# Prepare data
dat <- data.frame(category = rownames(USPersonalExpenditure),

# Define table
tbl <- create_table(dat) %>% 
  titles("Table 1.0", "US Personal Expenditures from 1940 - 1960") %>% 
  column_defaults(from = X1940, to = X1960, width = .6, format = "$%.2f") %>%
  define(category, label = "Category") %>% 
  define(X1940, label = "1940") %>% 
  define(X1945, label = "1945") %>% 
  define(X1950, label = "1950") %>% 
  define(X1955, label = "1955") %>% 
  define(X1960, label = "1960") %>% 
  footnotes("* In billions of dollars")

# Define report
rpt <- create_report(tmp, orientation="portrait") %>%

# Write the report

# Display in console
writeLines(readLines(tmp, encoding = "UTF-8"))
#                               Table 1.0
#               US Personal Expenditures from 1940 - 1960
#     Category                1940    1945    1950    1955    1960
#     ------------------------------------------------------------
#     Food and Tobacco      $22.20  $44.50  $59.60  $73.20  $86.80
#     Household Operation   $10.50  $15.50  $29.00  $36.50  $46.20
#     Medical and Health     $3.53   $5.76   $9.71  $14.00  $21.10
#     Personal Care          $1.04   $1.98   $2.45   $3.40   $5.40
#     Private Education      $0.34   $0.97   $1.80   $2.60   $3.64
#     * In billions of dollars