EVOLUTION-MANAGER
Edit File: listOfTablesGallery.Rnw
%\VignetteIndexEntry{xtable List of Tables Gallery} %\VignetteDepends{xtable} %\VignetteKeywords{LaTeX, HTML, table} %\VignettePackage{xtable} % !Rnw weave = knitr % \VignetteEngine{knitr::knitr} %************************************************************************** \documentclass{article} \usepackage[a4paper,height=24cm]{geometry} % geometry first \usepackage{array} \usepackage{booktabs} \usepackage{longtable} \usepackage{parskip} \usepackage{rotating} \usepackage{tabularx} \usepackage{titlesec} \usepackage{hyperref} % hyperref last \titleformat\subsubsection{\bfseries\itshape}{}{0pt}{} \newcommand\p{\vspace{2ex}} \newcommand\code[1]{\texttt{#1}} \newcommand\pkg[1]{\textbf{#1}} \setcounter{tocdepth}{2} \begin{document} \title{\bfseries\Large The \code{xtableList} Gallery} \author{\bfseries David J. Scott} \maketitle \tableofcontents \newpage \section{Introduction} This document represents a test of the functions in \pkg{xtable} which deal with lists of dataframes. <<set, include=FALSE>>= library(knitr) opts_chunk$set(fig.path='Figures/list', debug=TRUE, echo=TRUE) opts_chunk$set(out.width='0.9\\textwidth') @ The first step is to load the package and set some options for this document. <<package, results='asis'>>= library(xtable) options(xtable.floating = FALSE) options(xtable.timestamp = "") options(width = 60) @ Next we create a list of dataframes with attributes. <<data>>= require(xtable) data(mtcars) mtcars <- mtcars[, 1:6] mtcarsList <- split(mtcars, f = mtcars$cyl) ### Reduce the size of the list elements mtcarsList[[1]] <- mtcarsList[[1]][1,] mtcarsList[[2]] <- mtcarsList[[2]][1:2,] mtcarsList[[3]] <- mtcarsList[[3]][1:3,] attr(mtcarsList, "subheadings") <- paste0("Number of cylinders = ", names(mtcarsList)) attr(mtcarsList, "message") <- c("Line 1 of Message", "Line 2 of Message") str(mtcarsList) attributes(mtcarsList) @ %def Now create a list of \code{xtable} objects. <<xtablelist>>= xList <- xtableList(mtcarsList) str(xList) @ %def Create an alternative version where the lists have different values for \code{digits}. <<xtablelist1>>= xList1 <- xtableList(mtcarsList, digits = c(0,2,0,0,0,1,2)) str(xList1) @ %def <<xtablelist2>>= xList2 <- xtableList(mtcarsList, digits = c(0,2,0,0,0,1,2), caption = "Caption to List", label = "tbl:xtableList") str(xList2) @ %def Further versions with no subheadings, and no message <<xtablelist3>>= attr(mtcarsList, "subheadings") <- NULL xList3 <- xtableList(mtcarsList) str(xList3) @ %def <<xtablelist4>>= attr(mtcarsList, "message") <- NULL xList4 <- xtableList(mtcarsList) str(xList4) @ %def \newpage \section{Single Column Names} \label{sec:single-column-names} Print the list of \code{xtable} objects with a single header of the column names. First the default. <<singledefault, results='asis'>>= print.xtableList(xList) @ %def Booktabs should work. <<singlebooktabs, results='asis'>>= print.xtableList(xList, booktabs = TRUE) @ %def With digits being specified. <<singlebooktabs1, results='asis'>>= print.xtableList(xList1, booktabs = TRUE) @ %def Row and column names, subheadings, and the message can be sanitized. <<sanitize>>= large <- function(x){ paste0('{\\Large{\\bfseries ', x, '}}') } italic <- function(x){ paste0('{\\emph{ ', x, '}}') } bold <- function(x){ paste0('{\\bfseries ', x, '}') } red <- function(x){ paste0('{\\color{red} ', x, '}') } @ %def <<sanitizesingle, results='asis'>>= print.xtableList(xList, sanitize.rownames.function = italic, sanitize.colnames.function = large, sanitize.subheadings.function = bold, sanitize.message.function = red, booktabs = TRUE) @ %def A label and caption can be added. <<singlecaption, results='asis'>>= print.xtableList(xList2, floating = TRUE) @ %def Rotated column names? <<singlerotated, results='asis'>>= print.xtableList(xList, rotate.colnames = TRUE) @ %def No subheadings? <<nosubheadings, results='asis'>>= print.xtableList(xList3) @ %def No message? <<nomessage, results='asis'>>= print.xtableList(xList4) @ %def \section{Multiple Column Names} \label{sec:multiple-column-names} Print the list of \code{xtable} objects with multiple headers of the column names. First the default with multiple column name headers. <<multipledefault, results='asis'>>= print.xtableList(xList, colnames.format = "multiple") @ %def Using booktabs: <<multiplebooktabs, results='asis'>>= print.xtableList(xList, colnames.format = "multiple", booktabs = TRUE) @ %def With sanitization. <<sanitizemultiple, results='asis'>>= print.xtableList(xList, colnames.format = "multiple", sanitize.rownames.function = italic, sanitize.colnames.function = large, sanitize.subheadings.function = bold, sanitize.message.function = red, booktabs = TRUE) @ %def A label and caption can be added. <<multiplecaption, results='asis'>>= print.xtableList(xList2, colnames.format = "multiple", floating = TRUE) @ %def Rotated column names? <<multiplerotated, results='asis'>>= print.xtableList(xList, colnames.format = "multiple", rotate.colnames = TRUE) @ %def No subheadings? <<multiplenosubheadings, results='asis'>>= print.xtableList(xList3, colnames.format = "multiple") @ %def No message? <<multiplenomessage, results='asis'>>= print.xtableList(xList4, colnames.format = "multiple") @ %def \end{document}