Learn R Programming

ReporteRs (version 0.8.10)

FlexTable: FlexTable creation

Description

Create an object of class FlexTable.

FlexTable can be manipulated so that almost any formatting can be specified.

An API is available to let you manipulate (format, add text, merge cells, etc.) your FlexTable. A FlexTable is made of 3 parts: header, body and footer. To insert headers and footers rows with eventually merged cells, see addHeaderRow and addFooterRow.

Formating can be done on cells, paragraphs and text (borders, colors, fonts, etc.) , see alterFlexTable.

Usage

FlexTable(data, numrow, numcol, header.columns = TRUE, add.rownames = FALSE,
  body.cell.props = cellProperties(), body.par.props = parProperties(padding
  = 0), body.text.props = textProperties(),
  header.cell.props = cellProperties(),
  header.par.props = parProperties(padding = 0),
  header.text.props = textProperties(font.weight = "bold"))

Arguments

data

(a data.frame or matrix object) to add

numrow

number of row in the table body. Mandatory if data is missing.

numcol

number of col in the table body. Mandatory if data is missing.

header.columns

logical value - should the colnames be included in the table as table headers. If FALSE, no headers will be printed unless you use addHeaderRow.

add.rownames

logical value - should the row.names be included in the table.

body.cell.props

default cells formatting properties for table body

body.par.props

default paragraphs formatting properties for table body

body.text.props

default text formatting properties for table body

header.cell.props

default cells formatting properties for table headers

header.par.props

default paragraphs formatting properties for table headers

header.text.props

default text formatting properties for table headers

Details

The classical workflow would be to create a FlexTable, to add headers rows (see addHeaderRow) and eventually footers rows (see addFooterRow).

A FlexTable lets you add text in cells and modify cells, paragraphs and text properties. Text can be added with operator [<-. Text, paragraphs and cells properties can be also modified with operator [<-. (see alterFlexTable).

Below list of functions to use with FlexTable objects:

Text formatting

Apply a textProperties object to a subset of the FlexTable. Use the operator [<-. The textProperties object will be used to format all text from selected cells. See alterFlexTable.

Text adding

Add text with operator [<-. Text can be added just after the last text in the cell or as a new paragraph. Format can also be specified. Text can also be a pot object if the text format is complex.

Paragraph formatting

Apply a parProperties object to a subset of the FlexTable. Use the operator [<-. The parProperties object will be used to format all paragraphs from selected cells. See alterFlexTable.

Cell formatting

Apply a cellProperties object to a subset of the FlexTable. Use the operator [<-. The cellProperties object will be used to format selected cells. See alterFlexTable.

Borders

Apply borders scheme to a FlexTable with function setFlexTableBorders.

Set a border to a selection in a FlexTable with the operator [<- and an object of class borderProperties. Don't forget to specify argument side. See alterFlexTable.

Cell background colors

Applies background colors to cells. See setFlexTableBackgroundColors.

Alternate row colors (zebra striping) with function setZebraStyle.

Applies background colors to rows with function setRowsColors.

Applies background colors to columns with function setColumnsColors.

Cell merge

Span rows within columns with function spanFlexTableRows.

Span columns within rows with function spanFlexTableColumns.

Columns widths

Set columns widths with function setFlexTableWidths.

See Also

addHeaderRow, addFooterRow, setFlexTableWidths , alterFlexTable, setFlexTableBorders , spanFlexTableRows, spanFlexTableColumns , setRowsColors, setColumnsColors, setZebraStyle , setFlexTableBackgroundColors, pot , addFlexTable

Examples

Run this code
# NOT RUN {
# Create a FlexTable with data.frame mtcars, display rownames
# use different formatting properties for header and body
MyFTable <- FlexTable( data = mtcars, add.rownames = TRUE,
  header.cell.props = cellProperties( background.color = "#00557F" ),
  header.text.props = textProperties( color = "white",
    font.size = 11, font.weight = "bold" ),
  body.text.props = textProperties( font.size = 10 )
)
# zebra stripes - alternate colored backgrounds on table rows
MyFTable <- setZebraStyle( MyFTable, odd = "#E1EEf4", even = "white" )

# applies a border grid on table
MyFTable <- setFlexTableBorders(MyFTable,
  inner.vertical = borderProperties( color="#0070A8", style="solid" ),
  inner.horizontal = borderNone(),
  outer.vertical = borderProperties( color = "#006699",
	style = "solid", width = 2 ),
  outer.horizontal = borderProperties( color = "#006699",
	style = "solid", width = 2 )
)

# set default font size to 10
options("ReporteRs-fontsize" = 10)

# a summary of mtcars
dataset <- aggregate(mtcars[, c("disp", "mpg", "wt")],
  by = mtcars[, c("cyl", "gear", "carb")], FUN = mean)
dataset <- dataset[order(dataset$cyl, dataset$gear, dataset$carb),]


# set cell padding defaut to 2
baseCellProp <- cellProperties(padding = 2)

# Create a FlexTable with data.frame dataset
MyFTable <- FlexTable( data = dataset,
  body.cell.props = baseCellProp, header.cell.props = baseCellProp,
  header.par.props = parProperties(text.align = "right") )

# set columns widths (inch)
MyFTable <- setFlexTableWidths(MyFTable,
                              widths = c(0.5, 0.5, 0.5, 0.7, 0.7, 0.7))

# span successive identical cells within column 1, 2 and 3
MyFTable <- spanFlexTableRows(MyFTable, j = 1,
                             runs = as.character(dataset$cyl))
MyFTable <- spanFlexTableRows(MyFTable, j = 2,
                             runs = as.character(dataset$gear))
MyFTable <- spanFlexTableRows(MyFTable, j = 3,
                             runs = as.character(dataset$carb))

# overwrites some text formatting properties
MyFTable[dataset$wt < 3, 6] <- textProperties(color = "#003366")
MyFTable[dataset$mpg < 20, 5] <- textProperties(color = "#993300")

# overwrites some paragraph formatting properties
MyFTable[, 1:3] <- parProperties(text.align = "center")
MyFTable[, 4:6] <- parProperties(text.align = "right")


Footnote1 <- Footnote()

par1 <- pot("About this reference", textBold())
par2 <- pot(
  "Omni ab coalitos pro malivolus obsecrans graviter cum perquisitor \
  perquisitor pericula saepeque inmunibus coalitos ut.",
  textItalic(font.size = 8)
)
Footnote1 <- addParagraph(Footnote1,
                         set_of_paragraphs(par1, par2),
                         parProperties(text.align = "justify"))

Footnote1 <- addParagraph(
  Footnote1,
  set_of_paragraphs("list item 1", "list item 2"),
  parProperties(text.align = "left", list.style = "ordered")
)

an_rscript <- RScript(text = "x = rnorm(10)")
Footnote1 <- addParagraph(Footnote1, an_rscript)

MyFTable[1, 1, newpar = TRUE] <- pot("a note",
                                    footnote = Footnote1,
                                    format = textBold(color = "gray"))

pot_link <- pot(" (link example)", textProperties(color = "cyan"),
               hyperlink = "http://www.wikipedia.org/")

MyFTable[1, 1, to = "header"] <- pot_link

# applies a border grid on table
MyFTable <- setFlexTableBorders( MyFTable, footer = TRUE,
  inner.vertical = borderProperties(color = "#666666"),
  inner.horizontal = borderProperties(color = "#666666"),
  outer.vertical = borderProperties(width = 2, color = "#666666"),
  outer.horizontal = borderProperties(width = 2, color = "#666666") )

ft <- vanilla.table(head(iris))
ft <- setFlexTableBackgroundColors( ft,
  i = 1:3, j = c("Petal.Length", "Species"), colors = "yellow" )
# }

Run the code above in your browser using DataLab