Create a flextable object with function flextable.

flextable are designed to make tabular reporting easier for R users. Functions are available to let you format text, paragraphs and cells; table cells can be merge vertically or horizontally, row headers can easily be defined, rows heights and columns widths can be manually set or automatically computed.

If working with 'R Markdown' documents, you should read about knitr chunk options in knit_print.flextable() and about setting default values with set_flextable_defaults().

  col_keys = names(data),
  cwidth = 0.75,
  cheight = 0.25,
  defaults = list(),
  theme_fun = theme_booktabs






columns names/keys to display. If some column names are not in the dataset, they will be added as blank columns by default.

cwidth, cheight

initial width and height to use for cell sizes in inches.

defaults, theme_fun

deprecated, use set_flextable_defaults() instead.

Reuse frequently used parameters

Some default formatting properties are automatically applied to every flextable you produce.

It is highly recommended to use this function because its use will minimize the code. For example, instead of calling the fontsize() function over and over again for each new flextable, set the font size default value by calling (before creating the flextables) set_flextable_defaults(font.size = 11). This is also a simple way to have homogeneous arrays and make the documents containing them easier to read.

You can change these default values with function set_flextable_defaults(). You can reset them with function init_flextable_defaults(). You can access these values by calling get_flextable_defaults().

new lines and tabulations

The 'flextable' package will translate for you the new lines expressed in the form \n and the tabs expressed in the form \t.

The new lines will be transformed into "soft-return", that is to say a simple carriage return and not a new paragraph.

Tabs are different depending on the output format:

  • HTML is using entity em space

  • Word - a Word 'tab' element

  • PowerPoint - a PowerPoint 'tab' element

  • latex - tag "\quad "

flextable parts

A flextable is made of 3 parts: header, body and footer.

Most functions have an argument named part that will be used to specify what part of of the table should be modified.


qflextable is a convenient tool to produce quickly a flextable for reporting where layout is fixed (see set_table_properties()) and columns widths are adjusted with autofit().


ft <- flextable(head(mtcars))
#> a flextable object.
#> col_keys: `mpg`, `cyl`, `disp`, `hp`, `drat`, `wt`, `qsec`, `vs`, `am`, `gear`, `carb` 
#> header has 1 row(s) 
#> body has 6 row(s) 
#> original dataset sample: 
#>                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
#> Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
#> Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
#> Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
#> Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
#> Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2