]> git.donarmstrong.com Git - xtable.git/commitdiff
Vignettes changed to use knitr and section added to xtableGallery.Rnw to illustrate...
authordscott <dscott@edb9625f-4e0d-4859-8d74-9fd3b1da38cb>
Fri, 26 Sep 2014 12:51:06 +0000 (12:51 +0000)
committerdscott <dscott@edb9625f-4e0d-4859-8d74-9fd3b1da38cb>
Fri, 26 Sep 2014 12:51:06 +0000 (12:51 +0000)
git-svn-id: svn://scm.r-forge.r-project.org/svnroot/xtable@54 edb9625f-4e0d-4859-8d74-9fd3b1da38cb

pkg/DESCRIPTION
pkg/NEWS
pkg/vignettes/margintable.Rnw
pkg/vignettes/xtableGallery.Rnw [new file with mode: 0644]
pkg/vignettes/xtableGallery.snw [deleted file]

index a52eceecd3444ad1d6b22bc51393af45c3c1ee44..902300c711c3a7836686de7adc7c32c8a328f324 100644 (file)
@@ -4,6 +4,8 @@ Date: 2014/09/11
 Title: Export tables to LaTeX or HTML
 Author: David B. Dahl <dahl@stat.byu.edu>
 Maintainer: David Scott <d.scott@auckland.ac.nz>
+Suggests: knitr
+VignetteBuilder: knitr
 Description: Coerce data to LaTeX and HTML tables
 URL: http://xtable.r-forge.r-project.org/
 Depends: R (>= 2.10.0)
index 76d93459a19ccbcfb03070255cc71d868211f03c..86e04134561473eea930f5b5551007d038e52529 100644 (file)
--- a/pkg/NEWS
+++ b/pkg/NEWS
@@ -4,6 +4,11 @@
     added along with help file. Feature request #5686. R code for
     these functions is in formatHelpers.R and man page is called
     formatHelpers.Rd.
+  * xtableGallery.snw removed and replaced with
+    xtableGallery.Rnw. Both vignettes now use knitr instead of Sweave.
+  * Section added to xtableGallery showing use of xalign, xdigits, and
+    xdisplay
+
 
 1.7-4 (2014-09-11)
   * Released to CRAN
index b12c58353da47cc6a15f0a8bd657b4822152d7bf..cf4fd4b1679821295e89ba68f36e74dbc4be29ef 100644 (file)
@@ -1,6 +1,7 @@
 %\VignetteIndexEntry{xtable margintable}\r
 %\VignetteKeywords{LaTeX, HTML, table, margintable}\r
-\r
+% !Rnw weave = knitr\r
+% \VignetteEngine{knitr::knitr}\r
 \r
 \documentclass{tufte-handout}\r
 \r
@@ -10,8 +11,12 @@ A Margin Table Example
 }\r
 \author{David J. Scott}\r
 \r
-\usepackage{Sweave}\r
-\SweaveOpts{prefix.string=figdir/fig,debug=TRUE,eps=FALSE,echo=TRUE}\r
+\r
+\r
+<<include=FALSE>>=\r
+library(knitr)\r
+@\r
+\r
 \usepackage{rotating}\r
 \usepackage{longtable}\r
 \usepackage{booktabs}\r
@@ -55,7 +60,7 @@ x <- matrix(rnorm(6), ncol = 2)
 x.small <- xtable(x, label = 'tabsmall', caption = 'A margin table')\r
 @\r
 \r
-<<results=tex>>=\r
+<<results='asis'>>=\r
 print(x.small,floating.environment='margintable',\r
       latex.environments = "",\r
       table.placement = NULL)\r
diff --git a/pkg/vignettes/xtableGallery.Rnw b/pkg/vignettes/xtableGallery.Rnw
new file mode 100644 (file)
index 0000000..ce5d600
--- /dev/null
@@ -0,0 +1,685 @@
+%\VignetteIndexEntry{xtable Gallery}\r
+%\VignetteDepends{xtable}\r
+%\VignetteKeywords{LaTeX, HTML, table}\r
+%\VignettePackage{xtable}\r
+% !Rnw weave = knitr\r
+% \VignetteEngine{knitr::knitr}\r
+\r
+%**************************************************************************\r
+%\r
+% # $Id:$\r
+\r
+% $Revision:  $\r
+% $Author: $\r
+% $Date:  $\r
+\r
+\r
+\documentclass[article, nojss]{jss}\r
+\usepackage{amsthm}\r
+\usepackage{amsmath}\r
+\usepackage{graphicx}\r
+\usepackage{color}\r
+\usepackage{afterpage}\r
+\usepackage{hyperref}\r
+\r
+\title{\r
+The \pkg{xtable} Gallery\r
+}\r
+\author{Jonathan Swinton and others\\\r
+  <jonathan@swintons.net>\r
+}\r
+\r
+\Plainauthor{Jonathan Swinton, and others} %% comma-separated\r
+\r
+\Plaintitle{The xtable Gallery} %% without formatting\r
+\r
+\Shorttitle{\pkg{xtable} Gallery} %% a short title (if necessary)\r
+\r
+<<include=FALSE>>=\r
+library(knitr)\r
+opts_chunk$set(\r
+fig.path='figdir/fig', debug=TRUE, echo=TRUE\r
+)\r
+options(replace.assign = TRUE, width = 60,\r
+        tidy.opts = list(width.cutoff = 60))\r
+@\r
+\r
+\usepackage{rotating}\r
+\usepackage{longtable}\r
+\usepackage{booktabs}\r
+\usepackage{tabularx}\r
+%\usepackage{hyperref}\r
+\r
+\Abstract{\r
+\r
+  This document gives a gallery of tables which can be made by using\r
+  the \texttt{xtable} package to create \LaTeX\ output.  It doubles as\r
+  a regression check for the package.\r
+\r
+}\r
+\r
+\Keywords{Reproducible research, \LaTeX}\r
+\r
+\Address{\r
+  Jonathan Swinton\\\r
+  E-mail: \email{jonathan@swintons.net}\r
+}\r
+\r
+\begin{document}\r
+\r
+\r
+\r
+\section{Gallery}\r
+\subsection{Data frame}\r
+Load example dataset\r
+<<>>=\r
+library(xtable)\r
+data(tli)\r
+\r
+## Demonstrate data.frame\r
+tli.table <- xtable(tli[1:10, ])\r
+digits(tli.table)[c(2,6)] <- 0\r
+@\r
+<<results='asis'>>=\r
+print(tli.table, floating = FALSE)\r
+@\r
+\r
+\newpage\r
+\r
+\subsection{Matrix}\r
+<<>>=\r
+design.matrix <- model.matrix(~ sex*grade, data = tli[1:10, ])\r
+design.table <- xtable(design.matrix)\r
+@\r
+<<results='asis'>>=\r
+print(design.table, floating = FALSE)\r
+@\r
+\r
+\subsection{aov}\r
+<<>>=\r
+fm1 <- aov(tlimth ~ sex + ethnicty + grade + disadvg, data = tli)\r
+fm1.table <- xtable(fm1)\r
+@\r
+<<results='asis'>>=\r
+print(fm1.table, floating = FALSE)\r
+@\r
+\subsection{lm}\r
+<<>>=\r
+fm2 <- lm(tlimth ~ sex*ethnicty, data = tli)\r
+fm2.table <- xtable(fm2)\r
+@\r
+<<results='asis'>>=\r
+print(fm2.table, floating = FALSE)\r
+@\r
+\r
+\vspace{12pt}\textbf{\itshape An anova object}\r
+\r
+<<results='asis'>>=\r
+print(xtable(anova(fm2)), floating = FALSE)\r
+@\r
+\vspace{12pt}\textbf{\itshape Another anova object}\r
+<<>>=\r
+fm2b <- lm(tlimth ~ ethnicty, data = tli)\r
+@\r
+<<results='asis'>>=\r
+print(xtable(anova(fm2b, fm2)), floating = FALSE)\r
+@\r
+\r
+\r
+\subsection{glm}\r
+\r
+<<>>=\r
+\r
+## Demonstrate glm\r
+fm3 <- glm(disadvg ~ ethnicty*grade, data = tli, family = binomial())\r
+fm3.table <- xtable(fm3)\r
+@\r
+<<results='asis'>>=\r
+print(fm3.table, floating = FALSE)\r
+@\r
+\r
+\vspace{12pt}\textbf{\itshape An anova object}\r
+<<results='asis'>>=\r
+print(xtable(anova(fm3)), floating = FALSE)\r
+@\r
+\r
+\r
+\subsection{More aov}\r
+<<>>=\r
+\r
+## Demonstrate aov\r
+## Taken from help(aov) in R 1.1.1\r
+## From Venables and Ripley (1997) p.210.\r
+N <- c(0,1,0,1,1,1,0,0,0,1,1,0,1,1,0,0,1,0,1,0,1,1,0,0)\r
+P <- c(1,1,0,0,0,1,0,1,1,1,0,0,0,1,0,1,1,0,0,1,0,1,1,0)\r
+K <- c(1,0,0,1,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,1,1,0,1,0)\r
+yield <- c(49.5,62.8,46.8,57.0,59.8,58.5,55.5,56.0,62.8,55.8,69.5,55.0,\r
+           62.0,48.8,45.5,44.2,52.0,51.5,49.8,48.8,57.2,59.0,53.2,56.0)\r
+npk <- data.frame(block = gl(6,4), N = factor(N), P = factor(P),\r
+                  K = factor(K), yield = yield)\r
+npk.aov <- aov(yield ~ block + N*P*K, npk)\r
+op <- options(contrasts = c("contr.helmert", "contr.treatment"))\r
+npk.aovE <- aov(yield ~  N*P*K + Error(block), npk)\r
+options(op)\r
+@\r
+<<results='asis'>>=\r
+print(xtable(npk.aov), floating = FALSE)\r
+@\r
+\r
+\vspace{12pt}\textbf{\itshape An anova object}\r
+<<results='asis'>>=\r
+print(xtable(anova(npk.aov)), floating = FALSE)\r
+@\r
+\r
+\vspace{12pt}\textbf{\itshape Another anova object}\r
+<<results='asis'>>=\r
+print(xtable(summary(npk.aov)), floating = FALSE)\r
+@\r
+\r
+<<results='asis'>>=\r
+print(xtable(npk.aovE), floating = FALSE)\r
+@\r
+\r
+\r
+<<results='asis'>>=\r
+print(xtable(summary(npk.aovE)), floating = FALSE)\r
+@\r
+\r
+\subsection{More lm}\r
+<<>>=\r
+\r
+## Demonstrate lm\r
+## Taken from help(lm) in R 1.1.1\r
+## Annette Dobson (1990) "An Introduction to Generalized Linear Models".\r
+## Page 9: Plant Weight Data.\r
+ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)\r
+trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)\r
+group <- gl(2,10,20, labels = c("Ctl","Trt"))\r
+weight <- c(ctl, trt)\r
+lm.D9 <- lm(weight ~ group)\r
+@\r
+<<results='asis'>>=\r
+print(xtable(lm.D9), floating = FALSE)\r
+@\r
+\r
+\r
+<<results='asis'>>=\r
+print(xtable(anova(lm.D9)), floating = FALSE)\r
+@\r
+\r
+\subsection{More glm}\r
+<<>>=\r
+\r
+## Demonstrate glm\r
+## Taken from help(glm) in R 1.1.1\r
+## Annette Dobson (1990) "An Introduction to Generalized Linear Models".\r
+## Page 93: Randomized Controlled Trial :\r
+counts <- c(18,17,15,20,10,20,25,13,12)\r
+outcome <- gl(3,1,9)\r
+treatment <- gl(3,3)\r
+d.AD <- data.frame(treatment, outcome, counts)\r
+glm.D93 <- glm(counts ~ outcome + treatment, family = poisson())\r
+@\r
+<<results='asis'>>=\r
+print(xtable(glm.D93, align = "r|llrc"), floating = FALSE)\r
+@\r
+\r
+\subsection{prcomp}\r
+<<prcomp>>=\r
+if(require(stats, quietly = TRUE)) {\r
+  ## Demonstrate prcomp\r
+  ## Taken from help(prcomp) in mva package of R 1.1.1\r
+  data(USArrests)\r
+  pr1 <- prcomp(USArrests)\r
+}\r
+@\r
+<<results='asis'>>=\r
+if(require(stats, quietly = TRUE)) {\r
+  print(xtable(pr1), floating = FALSE)\r
+}\r
+@\r
+\r
+\r
+<<results='asis'>>=\r
+  print(xtable(summary(pr1)), floating = FALSE)\r
+@\r
+\r
+\r
+\r
+<<echo = FALSE, results = 'Hide'>>=\r
+#  ## Demonstrate princomp\r
+#  ## Taken from help(princomp) in mva package of R 1.1.1\r
+#  pr2 <- princomp(USArrests)\r
+#  print(xtable(pr2))\r
+@\r
+\r
+\subsection{Time series}\r
+\r
+<<>>=\r
+temp.ts <- ts(cumsum(1 + round(rnorm(100), 0)),\r
+              start = c(1954, 7), frequency = 12)\r
+temp.table <- xtable(temp.ts, digits = 0)\r
+caption(temp.table) <- "Time series example"\r
+@\r
+<<results='asis'>>=\r
+    print(temp.table, floating = FALSE)\r
+@\r
+<<savetofile,echo=FALSE>>=\r
+if (FALSE) {\r
+    for(i in c("latex", "html")) {\r
+        outFileName <- paste("xtable.", ifelse(i=="latex", "tex", i), sep = "")\r
+        print(xtable(lm.D9), type = i, file = outFileName, append = TRUE,\r
+              latex.environments = NULL)\r
+        print(xtable(lm.D9), type = i, file = outFileName, append = TRUE,\r
+              latex.environments = "")\r
+        print(xtable(lm.D9), type = i, file = outFileName, append = TRUE,\r
+              latex.environments = "center")\r
+        print(xtable(anova(glm.D93, test = "Chisq")),\r
+              type = i, file = outFileName,\r
+              append = TRUE)\r
+        print(xtable(anova(glm.D93)), hline.after = c(1),\r
+              size = "small", type = i,\r
+              file = outFileName, append = TRUE)\r
+      # print(xtable(pr2), type = i, file = outFileName, append = TRUE)\r
+    }\r
+}\r
+@\r
+\r
+\section{Helper functions for formatting}\r
+\label{sec:helperfns}\r
+The functions \code{xalign}, \code{xdigits}, and \code{xdisplay} are\r
+useful for formatting tables in a sensible way.\r
+\r
+<<preliminary>>=\r
+dat <- mtcars[1:3, 1:6]\r
+@ %def\r
+\r
+Consider the output produced by the default formatting.\r
+\r
+<<current>>=\r
+x <- xtable(dat)\r
+x\r
+@ %def\r
+\r
+In a \LaTeX\ document this appears as follows.\r
+\r
+<<currentresult, echo = FALSE, results = 'asis'>>=\r
+x\r
+@ %def\r
+\r
+Now change the default alignment, digits and display using helper functions\r
+\texttt{xalign}, \texttt{xdigits}, and \texttt{xdisplay}.\r
+\r
+\r
+<<proposed>>=\r
+align(x) <- xalign(x)\r
+digits(x) <- xdigits(x)\r
+display(x) <- xdisplay(x)\r
+x\r
+@ %def\r
+\r
+This produces a better format as shown below.\r
+\r
+<<proposedresult, echo = FALSE, results = 'asis'>>=\r
+x\r
+@ %def\r
+\r
+\r
+\r
+\section{Sanitization}\r
+<<>>=\r
+insane <- data.frame(Name = c("Ampersand","Greater than","Less than",\r
+                            "Underscore","Per cent","Dollar",\r
+                            "Backslash","Hash","Caret","Tilde",\r
+                            "Left brace","Right brace"),\r
+                     Character = I(c("&",">","<","_","%","$",\r
+                                     "\\","#","^","~","{","}")))\r
+colnames(insane)[2] <- paste(insane[, 2], collapse = "")\r
+@\r
+\r
+<<pxti,results='asis'>>=\r
+print( xtable(insane), floating = FALSE)\r
+@\r
+\r
+\vspace{12pt}\r
+Sometimes you might want to have your own sanitization function\r
+<<>>=\r
+wanttex <- xtable(data.frame(label =\r
+                             paste("Value_is $10^{-",1:3,"}$", sep = "")))\r
+@\r
+<<results='asis'>>=\r
+print(wanttex,\r
+      sanitize.text.function =\r
+      function(str)gsub("_", "\\_", str, fixed = TRUE))\r
+@\r
+\r
+\subsection{Markup in tables}\r
+\r
+Markup can be included in tables, including in column and row names, by using\r
+a custom \code{sanitize.text.function()}:\r
+\r
+<<>>=\r
+mat <- round(matrix(c(0.9, 0.89, 200, 0.045, 2.0), c(1, 5)), 4)\r
+rownames(mat) <- "$y_{t-1}$"\r
+colnames(mat) <- c("$R^2$", "$\\bar{R}^2$", "F-stat", "S.E.E", "DW")\r
+mat <- xtable(mat)\r
+@\r
+<<results='asis'>>=\r
+print(mat, sanitize.text.function = function(x){x})\r
+@\r
+\r
+% By David Dahl to demonstrate contribution from David Whitting, 2007-10-09.\r
+You can also have sanitize functions that are specific to column or\r
+row names.  In the table below, the row name is not sanitized but\r
+column names and table elements are:\r
+<<>>=\r
+money <- matrix(c("$1,000","$900","$100"), ncol = 3,\r
+                dimnames = list("$\\alpha$",\r
+                              c("Income (US$)","Expenses (US$)",\r
+                                "Profit (US$)")))\r
+@\r
+<<results='asis'>>=\r
+print(xtable(money), sanitize.rownames.function = function(x) {x})\r
+@\r
+\r
+\section{Format examples}\r
+\subsection{Adding a centering environment }\r
+<<results='asis'>>=\r
+   print(xtable(lm.D9, caption = "\\tt latex.environments = NULL"),\r
+         latex.environments = NULL)\r
+    print(xtable(lm.D9, caption = "\\tt latex.environments = \"\""),\r
+          latex.environments = "")\r
+    print(xtable(lm.D9, caption = "\\tt latex.environments = \"center\""),\r
+          latex.environments = "center")\r
+@\r
+\subsection{Column alignment}\r
+\r
+<<>>=\r
+tli.table <- xtable(tli[1:10, ])\r
+@\r
+<<>>=\r
+align(tli.table) <- rep("r", 6)\r
+@\r
+<<results='asis'>>=\r
+print(tli.table, floating = FALSE)\r
+@\r
+\r
+\vspace{12pt}\r
+\textbf{\itshape Single string and column lines}\r
+<<>>=\r
+align(tli.table) <- "|rrl|l|lr|"\r
+@\r
+<<results='asis'>>=\r
+print(tli.table, floating = FALSE)\r
+@\r
+\vspace{12pt}\textbf{\itshape Fixed width columns}\r
+<<>>=\r
+align(tli.table) <- "|rr|lp{3cm}l|r|"\r
+@\r
+<<results='asis'>>=\r
+print(tli.table, floating = FALSE)\r
+@\r
+\r
+\subsection{Significant digits}\r
+\r
+\r
+Specify with a single argument\r
+<<>>=\r
+digits(tli.table) <- 3\r
+@\r
+<<results='asis'>>=\r
+print(tli.table, floating = FALSE)\r
+@\r
+\r
+\r
+\vspace{12pt}\r
+or one for each column, counting the row names,\r
+<<>>=\r
+digits(tli.table) <- 1:(ncol(tli)+1)\r
+@\r
+<<results='asis'>>=\r
+print(tli.table, floating = FALSE)\r
+@\r
+\r
+\vspace{12pt}\r
+or as a full matrix\r
+<<>>=\r
+digits(tli.table) <- matrix( 0:4, nrow = 10, ncol = ncol(tli)+1 )\r
+@\r
+<<results='asis'>>=\r
+print(tli.table, floating = FALSE)\r
+@\r
+\r
+\subsection{Suppress row names}\r
+<<results='asis'>>=\r
+print((tli.table), include.rownames = FALSE, floating = FALSE)\r
+@\r
+\r
+\vspace{12pt} If you want a vertical line on the left, you need to\r
+change the \code{align} attribute.\r
+<<>>=\r
+align(tli.table) <- "|r|r|lp{3cm}l|r|"\r
+@\r
+<<results='asis'>>=\r
+print((tli.table), include.rownames = FALSE, floating = FALSE)\r
+@\r
+\r
+\vspace{12pt} Revert the alignment to what is was before.\r
+<<>>=\r
+align(tli.table) <- "|rr|lp{3cm}l|r|"\r
+@\r
+\r
+\subsection{Suppress column names}\r
+<<results='asis'>>=\r
+print((tli.table), include.colnames = FALSE, floating = FALSE)\r
+@\r
+\r
+\vspace{12pt}\r
+Note the doubled header lines which can be suppressed with, eg,\r
+<<results='asis'>>=\r
+print(tli.table, include.colnames = FALSE, floating = FALSE,\r
+      hline.after = c(0,nrow(tli.table)))\r
+@\r
+\r
+\subsection{Suppress row and column names}\r
+<<results='asis'>>=\r
+print((tli.table), include.colnames = FALSE, include.rownames = FALSE,\r
+      floating = FALSE)\r
+@\r
+\r
+\subsection{Rotate row and column names}\r
+The \texttt{rotate.rownames } and \texttt{rotate.colnames} arguments can be\r
+used to rotate the row and/or column names.\r
+\r
+<<results='asis'>>=\r
+print((tli.table), rotate.rownames = TRUE, rotate.colnames = TRUE)\r
+@\r
+\r
+\subsection{Horizontal lines}\r
+\r
+\vspace{12pt}\textbf{\itshape Line locations}\r
+\r
+Use the \texttt{hline.after} argument to specify the position of the\r
+horizontal lines.\r
+\r
+<<results='asis'>>=\r
+print(xtable(anova(glm.D93)), hline.after = c(1), floating = FALSE)\r
+@\r
+\r
+\vspace{12pt}\textbf{\itshape Line styles}\r
+\r
+The \LaTeX package \pkg{ booktabs} can be used to specify different\r
+line style tags for top, middle, and bottom lines.  Specifying\r
+\code{ booktabs = TRUE} will lead to separate tags being generated\r
+for the three line types.\r
+\r
+Insert \verb|\usepackage{booktabs}| in your \LaTeX preamble and define\r
+the \texttt{toprule}, \texttt{midrule}, and \texttt{bottomrule}\r
+tags to specify the line styles. By default, when no value is given\r
+for \texttt{hline.after}, a \texttt{toprule} will be drawn above the\r
+table, a \texttt{midrule} after the table headings and a\r
+\texttt{bottomrule} below the table. The width of the top and bottom\r
+rules can be set by supplying a value to \verb+\heavyrulewidth+. The\r
+width of the midrules can be set by supplying a value to\r
+\verb+\lightrulewidth+. The following tables have\r
+\verb+\heavyrulewidth = 2pt+ and \verb+\lightrulewidth = 0.5pt+, to\r
+ensure the difference in weight is noticeable.\r
+\r
+There is no support for \verb+\cmidrule+ or \verb+\specialrule+\r
+although they are part of the \texttt{booktabs} package.\r
+\r
+\heavyrulewidth = 2pt\r
+\lightrulewidth = 0.5pt\r
+\r
+<<results='asis'>>=\r
+print(tli.table, booktabs = TRUE, floating = FALSE)\r
+@\r
+\r
+\vspace{12pt}\r
+If \texttt{hline.after} includes $-1$, a \texttt{toprule} will be\r
+drawn above the table. If \texttt{hline.after} includes the number of\r
+rows in the table, a \texttt{bottomrule} will be drawn below the\r
+table. For any other values specified in \texttt{hline.after}, a\r
+\texttt{midrule} will be drawn after that line of the table.\r
+\r
+The next table has more than one \texttt{midrule}.\r
+\r
+<<>>=\r
+bktbs <- xtable(matrix(1:10, ncol = 2))\r
+hlines <- c(-1,0,1,nrow(bktbs))\r
+@\r
+This command produces the required table.\r
+<<results='asis'>>=\r
+print(bktbs, booktabs = TRUE, hline.after = hlines, floating = FALSE)\r
+@\r
+\r
+\r
+\subsection{Table-level LaTeX}\r
+<<results='asis'>>=\r
+print(xtable(anova(glm.D93)), size = "small", floating = FALSE)\r
+@\r
+\r
+\r
+\subsection{Long tables}\r
+Remember to insert \verb|\usepackage{longtable}| in your \LaTeX preamble.\r
+\r
+<<longtable>>=\r
+\r
+## Demonstration of longtable support.\r
+x <- matrix(rnorm(1000), ncol = 10)\r
+x.big <- xtable(x, label = 'tabbig',\r
+                caption = 'Example of \\code{longtable} spanning several pages')\r
+@\r
+<<results='asis'>>=\r
+print(x.big, tabular.environment = 'longtable', floating = FALSE)\r
+@\r
+\r
+%%\r
+%% The column name alignment is off in the following example.\r
+%% It needs some revision before exposing it. - CR, 7/2/2012\r
+%%\r
+%\r
+%\vspace{12pt}\textbf{\itshape Long tables with the header on each page}\r
+%\r
+%The \texttt{add.to.row} argument can be used to display the header\r
+%for a long table on each page, and to add a "continued" footer\r
+%on all pages except the last page.\r
+%\r
+%<<results=tex>>=\r
+%library(xtable)\r
+%x<-matrix(rnorm(1000), ncol = 10)\r
+%addtorow<-list()\r
+%addtorow$pos<-list()\r
+%addtorow$pos[[1]]<-c(0)\r
+%addtorow$command<-c(paste(\r
+%    "\\hline \n",\r
+%    "  \\endhead \n",\r
+%    "  \\hline \n",\r
+%    "  {\\footnotesize Continued on next page} \n",\r
+%    "  \\endfoot \n",\r
+%    "  \\endlastfoot \n", sep = ""))\r
+%x.big2 <- xtable(x, label = "tabbig2",\r
+%    caption = "Example of longtable with the header on each page")\r
+%print(x.big2, tabular.environment = "longtable", floating = FALSE,\r
+%include.rownames = FALSE, add.to.row = addtorow, hline.after = c(-1) )\r
+%@\r
+\r
+\subsection{Sideways tables}\r
+Remember to insert \verb|\usepackage{rotating}| in your LaTeX\r
+preamble.  Sideways tables can't be forced in place with the `H'\r
+specifier, but you can use the \verb|\clearpage| command to get them\r
+fairly nearby.\r
+\r
+<<>>=\r
+x <- x[1:30, ]\r
+x.small <- xtable(x, label = 'tabsmall', caption = 'A sideways table')\r
+@\r
+\r
+<<results='asis'>>=\r
+print(x.small, floating.environment = 'sidewaystable')\r
+@\r
+\clearpage\r
+\r
+\subsection{Rescaled tables}\r
+Specify a \texttt{scalebox} value to rescale the table.\r
+\r
+<<>>=\r
+x <- x[1:20, ]\r
+x.rescale <- xtable(x, label = 'tabrescaled', caption = 'A rescaled table')\r
+@\r
+\r
+<<results='asis'>>=\r
+print(x.rescale, scalebox = 0.7)\r
+@\r
+\r
+\subsection{Table Width}\r
+The \texttt{tabularx} tabular environment provides more alignment options,\r
+and has a \texttt{width} argument to specify the table width.\r
+\r
+Remember to insert \verb|\usepackage{tabularx}| in your \LaTeX\ preamble.\r
+\r
+<<>>=\r
+df.width <- data.frame(\r
+    "label 1 with much more text than is needed" = c("item 1", "A"),\r
+    "label 2 is also very long" = c("item 2","B"),\r
+    "label 3" = c("item 3","C"),\r
+    "label 4" = c("item 4 but again with too much text","D"),\r
+    check.names = FALSE)\r
+\r
+x.width <- xtable(df.width,\r
+                  caption = "Using the 'tabularx' environment")\r
+align(x.width) <- "|l|X|X|l|X|"\r
+@\r
+\r
+<<results='asis'>>=\r
+print(x.width, tabular.environment = "tabularx",\r
+      width = "\\textwidth")\r
+@\r
+\r
+\section{Suppressing Printing}\r
+By default the \texttt{print} method will print the LaTeX or HTML to standard\r
+output and also return the character strings invisibly.  The printing to\r
+standard output can be suppressed by specifying \texttt{print.results = FALSE}.\r
+\r
+<<>>=\r
+x.out <- print(tli.table, print.results = FALSE)\r
+@\r
+\r
+Formatted output can also be captured without printing with the\r
+\texttt{toLatex} method.  This function returns an object of class\r
+\texttt{"Latex"}.\r
+\r
+<<>>=\r
+x.ltx <- toLatex(tli.table)\r
+class(x.ltx)\r
+x.ltx\r
+@\r
+\r
+\section{Acknowledgements}\r
+Most of the examples in this gallery are taken from the \texttt{xtable}\r
+documentation.\r
+\section{R Session information}\r
+<<results='asis'>>=\r
+toLatex(sessionInfo())\r
+@\r
+\end{document}\r
diff --git a/pkg/vignettes/xtableGallery.snw b/pkg/vignettes/xtableGallery.snw
deleted file mode 100644 (file)
index 02aa797..0000000
+++ /dev/null
@@ -1,607 +0,0 @@
-%\VignetteIndexEntry{xtable Gallery}
-%\VignetteDepends{xtable}
-%\VignetteKeywords{LaTeX,HTML,table}
-%\VignettePackage{xtable}
-
-%**************************************************************************
-%
-% # $Id:$
-
-% $Revision:  $
-% $Author: $
-% $Date:  $
-
-<<echo=FALSE,eval=FALSE>>=
-makeme <- function() {
-       # I am a convenience function for debugging and can be ignored
-       setwd("C:/JonathanSwinton/PathwayModeling/src/R/SourcePackages/xtable/inst/doc")
-       Sweave("xtableGallery.RnW",stylepath=FALSE)
-}
-makeme()
-@
-
-\documentclass[letterpaper]{article}
-
-\title{
-The xtable gallery
-}
-\author{Jonathan Swinton <jonathan@swintons.net>\\
-  with small contributions from others}
-
-\usepackage{Sweave}
-\SweaveOpts{prefix.string=figdir/fig,debug=TRUE,eps=FALSE,echo=TRUE}
-\usepackage{rotating}
-\usepackage{longtable}
-\usepackage{booktabs}
-\usepackage{tabularx}
-%\usepackage{hyperref}
-\begin{document}
-
-\maketitle
-\section{Summary}
-This document gives a gallery of tables which can be made
-by using the {\tt xtable} package to create \LaTeX\ output.
-It doubles as a regression check for the package.
-
-<<>>=
-library(xtable)
-@
-
-\section{Gallery}
-\subsection{Data frame}
-Load example dataset
-<<>>=
-data(tli)
-
-## Demonstrate data.frame
-tli.table <- xtable(tli[1:10,])
-digits(tli.table)[c(2,6)] <- 0
-@
-<<results=tex>>=
-print(tli.table,floating=FALSE)
-@
-
-\subsection{Matrix}
-<<>>=
-design.matrix <- model.matrix(~ sex*grade, data=tli[1:10,])
-design.table <- xtable(design.matrix)
-@
-<<results=tex>>=
-print(design.table,floating=FALSE)
-@
-
-\subsection{aov}
-<<>>=
-fm1 <- aov(tlimth ~ sex + ethnicty + grade + disadvg, data=tli)
-fm1.table <- xtable(fm1)
-@
-<<results=tex>>=
-print(fm1.table,floating=FALSE)
-@
-\subsection{lm}
-<<>>=
-fm2 <- lm(tlimth ~ sex*ethnicty, data=tli)
-fm2.table <- xtable(fm2)
-@
-<<results=tex>>=
-print(fm2.table,floating=FALSE)
-@
-\subsubsection{anova object}
-
-<<results=tex>>=
-print(xtable(anova(fm2)),floating=FALSE)
-@
-\subsubsection{Another anova object}
-<<>>=
-fm2b <- lm(tlimth ~ ethnicty, data=tli)
-@
-<<results=tex>>=
-print(xtable(anova(fm2b,fm2)),floating=FALSE)
-@
-
-
-\subsection{glm}
-
-<<>>=
-
-## Demonstrate glm
-fm3 <- glm(disadvg ~ ethnicty*grade, data=tli, family=binomial())
-fm3.table <- xtable(fm3)
-@
-<<results=tex>>=
-print(fm3.table,floating=FALSE)
-@
-
-\subsubsection{anova object}
-@
-<<results=tex>>=
-print(xtable(anova(fm3)),floating=FALSE)
-@
-
-
-\subsection{More aov}
-<<>>=
-
-## Demonstrate aov
-## Taken from help(aov) in R 1.1.1
-## From Venables and Ripley (1997) p.210.
-N <- c(0,1,0,1,1,1,0,0,0,1,1,0,1,1,0,0,1,0,1,0,1,1,0,0)
-P <- c(1,1,0,0,0,1,0,1,1,1,0,0,0,1,0,1,1,0,0,1,0,1,1,0)
-K <- c(1,0,0,1,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,1,1,0,1,0)
-yield <- c(49.5,62.8,46.8,57.0,59.8,58.5,55.5,56.0,62.8,55.8,69.5,55.0,
-           62.0,48.8,45.5,44.2,52.0,51.5,49.8,48.8,57.2,59.0,53.2,56.0)
-npk <- data.frame(block=gl(6,4), N=factor(N), P=factor(P), K=factor(K),
-                  yield=yield)
-npk.aov <- aov(yield ~ block + N*P*K, npk)
-op <- options(contrasts=c("contr.helmert", "contr.treatment"))
-npk.aovE <- aov(yield ~  N*P*K + Error(block), npk)
-options(op)
-#summary(npk.aov)
-@
-<<results=tex>>=
-print(xtable(npk.aov),floating=FALSE)
-@
-
-\subsubsection{anova object}
-<<results=tex>>=
-print(xtable(anova(npk.aov)),floating=FALSE)
-@
-
-\subsubsection{Another anova object}
-<<results=tex>>=
-print(xtable(summary(npk.aov)),floating=FALSE)
-@
-
-<<>>=
-#summary(npk.aovE)
-@
-<<results=tex>>=
-print(xtable(npk.aovE),floating=FALSE)
-@
-
-
-<<results=tex>>=
-print(xtable(summary(npk.aovE)),floating=FALSE)
-@
-
-\subsection{More lm}
-<<>>=
-
-## Demonstrate lm
-## Taken from help(lm) in R 1.1.1
-## Annette Dobson (1990) "An Introduction to Generalized Linear Models".
-## Page 9: Plant Weight Data.
-ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
-trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
-group <- gl(2,10,20, labels=c("Ctl","Trt"))
-weight <- c(ctl, trt)
-lm.D9 <- lm(weight ~ group)
-@
-<<results=tex>>=
-print(xtable(lm.D9),floating=FALSE)
-@
-
-
-<<results=tex>>=
-print(xtable(anova(lm.D9)),floating=FALSE)
-@
-
-\subsection{More glm}
-<<>>=
-
-## Demonstrate glm
-## Taken from help(glm) in R 1.1.1
-## Annette Dobson (1990) "An Introduction to Generalized Linear Models".
-## Page 93: Randomized Controlled Trial :
-counts <- c(18,17,15,20,10,20,25,13,12)
-outcome <- gl(3,1,9)
-treatment <- gl(3,3)
-d.AD <- data.frame(treatment, outcome, counts)
-glm.D93 <- glm(counts ~ outcome + treatment, family=poisson())
-@
-<<results=tex>>=
-print(xtable(glm.D93,align="r|llrc"),floating=FALSE)
-@
-
-\subsection{prcomp}
-<<prcomp>>=
-if(require(stats,quietly=TRUE)) {
-  ## Demonstrate prcomp
-  ## Taken from help(prcomp) in mva package of R 1.1.1
-  data(USArrests)
-  pr1 <- prcomp(USArrests)
-}
-@
-<<results=tex>>=
-if(require(stats,quietly=TRUE)) {
-  print(xtable(pr1),floating=FALSE)
-}
-@
-
-
-@
-<<results=tex>>=
-  print(xtable(summary(pr1)),floating=FALSE)
-@
-
-
-
-<<>>=
-#  ## Demonstrate princomp
-#  ## Taken from help(princomp) in mva package of R 1.1.1
-#  pr2 <- princomp(USArrests)
-#  print(xtable(pr2))
-@
-\subsection{Time series}
-
-<<>>=
-temp.ts <- ts(cumsum(1+round(rnorm(100), 0)), start = c(1954, 7), frequency=12)
-   temp.table <- xtable(temp.ts,digits=0)
-    caption(temp.table) <- "Time series example"
-@
-<<results=tex>>=
-    print(temp.table,floating=FALSE)
-@
-<<savetofile,echo=FALSE>>=
-if (FALSE) {
-  for(i in c("latex","html")) {
-    outFileName <- paste("xtable.",ifelse(i=="latex","tex",i),sep="")
-    print(xtable(lm.D9),type=i,file=outFileName,append=TRUE,
-          latex.environments=NULL)
-    print(xtable(lm.D9),type=i,file=outFileName,append=TRUE,
-          latex.environments="")
-    print(xtable(lm.D9),type=i,file=outFileName,append=TRUE,
-          latex.environments="center")
-    print(xtable(anova(glm.D93,test="Chisq")),type=i,file=outFileName,
-          append=TRUE)
-    print(xtable(anova(glm.D93)),hline.after=c(1),size="small",type=i,
-          file=outFileName,append=TRUE)
-      # print(xtable(pr2),type=i,file=outFileName,append=TRUE)
-         }
-}
-@
-
-\section{Sanitization}
-<<>>=
-insane <- data.frame(Name=c("Ampersand","Greater than","Less than","Underscore","Per cent","Dollar","Backslash","Hash", "Caret", "Tilde","Left brace","Right brace"),
-                               Character = I(c("&",">",                "<",            "_",            "%",            "$",            "\\", "#",      "^",            "~","{","}")))
-colnames(insane)[2] <- paste(insane[,2],collapse="")
-@
-
-<<pxti,results=tex>>=
-print( xtable(insane))
-@
-Sometimes you might want to have your own sanitization function
-<<>>=
-wanttex <- xtable(data.frame( label=paste("Value_is $10^{-",1:3,"}$",sep="")))
-@
-<<results=tex>>=
-print(wanttex,
-      sanitize.text.function=function(str)gsub("_","\\_",str,fixed=TRUE))
-@
-
-\subsection{Markup in tables}
-
-Markup can be kept in tables, including column and row names, by using
-a custom sanitize.text.function:
-
-<<>>=
-mat <- round(matrix(c(0.9, 0.89, 200, 0.045, 2.0), c(1, 5)), 4)
-rownames(mat) <- "$y_{t-1}$"
-colnames(mat) <- c("$R^2$", "$\\bar{R}^2$", "F-stat", "S.E.E", "DW")
-mat <- xtable(mat)
-@
-<<results=tex>>=
-print(mat, sanitize.text.function = function(x){x})
-@
-
-% By David Dahl to demonstrate contribution from David Whitting, 2007-10-09.
-You can also have sanitize functions that are specific to column or
-row names.  In the table below, the row name is not sanitized but
-column names and table elements are:
-<<>>=
-money <- matrix(c("$1,000","$900","$100"),ncol=3,
-                dimnames=list("$\\alpha$",
-                              c("Income (US$)","Expenses (US$)",
-                                "Profit (US$)")))
-@
-<<results=tex>>=
-print(xtable(money),sanitize.rownames.function=function(x) {x})
-@
-
-\section{Format examples}
-\subsection{Adding a centering environment }
-<<results=tex>>=
-   print(xtable(lm.D9,caption="\\tt latex.environments=NULL"),
-         latex.environments=NULL)
-    print(xtable(lm.D9,caption="\\tt latex.environments=\"\""),
-          latex.environments="")
-    print(xtable(lm.D9,caption="\\tt latex.environments=\"center\""),
-          latex.environments="center")
-@
-\subsection{Column alignment}
-
-<<>>=
-tli.table <- xtable(tli[1:10,])
-@
-<<>>=
-align(tli.table) <- rep("r",6)
-@
-<<results=tex>>=
-print(tli.table,floating=FALSE)
-@
-\subsubsection{Single string and column lines}
-<<>>=
-align(tli.table) <- "|rrl|l|lr|"
-@
-<<results=tex>>=
-print(tli.table,floating=FALSE)
-@
-\subsubsection{Fixed width columns}
-<<>>=
-align(tli.table) <- "|rr|lp{3cm}l|r|"
-@
-<<results=tex>>=
-print(tli.table,floating=FALSE)
-@
-
-\subsection{Significant digits}
-
-
-Specify with a single argument
-<<>>=
-digits(tli.table) <- 3
-@
-<<results=tex>>=
-print(tli.table,floating=FALSE,)
-@
-
-
-or one for each column, counting the row names
-<<>>=
-digits(tli.table) <- 1:(ncol(tli)+1)
-@
-<<results=tex>>=
-print(tli.table,floating=FALSE,)
-@
-
-
-or as a full matrix
-<<>>=
-digits(tli.table) <- matrix( 0:4, nrow = 10, ncol = ncol(tli)+1 )
-@
-<<results=tex>>=
-print(tli.table,floating=FALSE,)
-@
-
-\subsection{Suppress row names}
-<<results=tex>>=
-print((tli.table),include.rownames=FALSE,floating=FALSE)
-@
-
-If you want a vertical line on the left, you need to change the align attribute.
-<<>>=
-align(tli.table) <- "|r|r|lp{3cm}l|r|"
-@
-<<results=tex>>=
-print((tli.table),include.rownames=FALSE,floating=FALSE)
-@
-
-Revert the alignment to what is was before.
-<<>>=
-align(tli.table) <- "|rr|lp{3cm}l|r|"
-@
-
-\subsection{Suppress column names}
-<<results=tex>>=
-print((tli.table),include.colnames=FALSE,floating=FALSE)
-@
-\\
-Note the doubled header lines which can be suppressed with, eg,
-<<results=tex>>=
-print(tli.table,include.colnames=FALSE,floating=FALSE,
-      hline.after=c(0,nrow(tli.table)))
-@
-
-\subsection{Suppress row and column names}
-<<results=tex>>=
-print((tli.table),include.colnames=FALSE,include.rownames=FALSE,
-      floating=FALSE)
-@
-
-\subsection{Rotate row and column names}
-The {\tt rotate.rownames } and {\tt rotate.colnames} arguments can be
-used to rotate the row and/or column names.
-
-<<results=tex>>=
-print((tli.table),rotate.rownames=TRUE,rotate.colnames=TRUE)
-@
-
-\subsection{Horizontal lines}
-
-\subsubsection{Line locations}
-
-Use the {\tt hline.after} argument to specify the position of the
-horizontal lines.
-
-<<results=tex>>=
-print(xtable(anova(glm.D93)),hline.after=c(1),floating=FALSE)
-@
-
-\subsubsection{Line styles}
-
-The \LaTeX package {\tt booktabs} can be used to specify different
-line style tags for top, middle, and bottom lines.  Specifying
-{\tt booktabs = TRUE} will lead to separate tags being generated
-for the three line types.
-
-Insert \verb|\usepackage{booktabs}| in your \LaTeX preamble and define
-the {\tt toprule}, {\tt midrule}, and {\tt bottomrule} tags to specify
-the line styles. By default, when no value is given for
-\texttt{hline.after}, a \texttt{toprule} will be drawn above the
-table, a \texttt{midrule} after the table headings and a
-\texttt{bottomrule} below the table. The width of the top and bottom
-rules can be set by supplying a value to \verb+\heavyrulewidth+. The
-width of the midrules can be set by supplying a value to
-\verb+\lightrulewidth+. The following tables have
-\verb+\heavyrulewidth = 2pt+ and \verb+\lightrulewidth = 0.5pt+, to
-ensure the difference in weight is noticeable.
-
-There is no support for \verb+\cmidrule+ or \verb+\specialrule+
-although they are part of the \texttt{booktabs} package.
-
-\heavyrulewidth = 2pt
-\lightrulewidth = 0.5pt
-
-<<results=tex>>=
-print(tli.table, booktabs=TRUE, floating = FALSE)
-@
-
-\vspace{12pt}
-If \texttt{hline.after} includes $-1$, a \texttt{toprule} will be
-drawn above the table. If \texttt{hline.after} includes the number of
-rows in the table, a \texttt{bottomrule} will be drawn below the
-table. For any other values specified in \texttt{hline.after}, a
-\texttt{midrule} will be drawn after that line of the table.
-
-The next table has more than one \texttt{midrule}.
-
-<<>>=
-bktbs <- xtable(matrix(1:10, ncol = 2))
-hlines <- c(-1,0,1,nrow(bktbs))
-@
-This command produces the required table.
-<<results=tex>>=
-print(bktbs, booktabs = TRUE, hline.after = hlines, floating = FALSE)
-@
-
-
-\subsection{Table-level \LaTeX}
-<<results=tex>>=
-print(xtable(anova(glm.D93)),size="small",floating=FALSE)
-@
-
-
-\subsection{Long tables}
-Remember to insert \verb|\usepackage{longtable}| in your \LaTeX preamble.
-
-<<longtable>>=
-
-## Demonstration of longtable support.
-x <- matrix(rnorm(1000), ncol = 10)
-x.big <- xtable(x,label='tabbig',
-       caption='Example of longtable spanning several pages')
-@
-<<results=tex>>=
-print(x.big,tabular.environment='longtable',floating=FALSE)
-@
-
-%%
-%% The column name alignment is off in the following example.
-%% It needs some revision before exposing it. - CR, 7/2/2012
-%%
-%
-%\subsubsection{Long tables with the header on each page}
-%
-%The {\tt add.to.row} argument can be used to display the header
-%for a long table on each page, and to add a "continued" footer
-%on all pages except the last page.
-%
-%<<results=tex>>=
-%library(xtable)
-%x<-matrix(rnorm(1000), ncol = 10)
-%addtorow<-list()
-%addtorow$pos<-list()
-%addtorow$pos[[1]]<-c(0)
-%addtorow$command<-c(paste(
-%    "\\hline \n",
-%    "  \\endhead \n",
-%    "  \\hline \n",
-%    "  {\\footnotesize Continued on next page} \n",
-%    "  \\endfoot \n",
-%    "  \\endlastfoot \n",sep=""))
-%x.big2 <- xtable(x, label = "tabbig2",
-%    caption = "Example of longtable with the header on each page")
-%print(x.big2, tabular.environment = "longtable", floating = FALSE,
-%include.rownames=FALSE, add.to.row=addtorow, hline.after=c(-1) )
-%@
-
-\subsection{Sideways tables}
-Remember to insert \verb|\usepackage{rotating}| in your LaTeX
-preamble.  Sideways tables can't be forced in place with the `H'
-specifier, but you can use the \verb|\clearpage| command to get them
-fairly nearby.
-
-<<>>=
-x <- x[1:30,]
-x.small <- xtable(x,label='tabsmall',caption='A sideways table')
-@
-
-<<results=tex>>=
-print(x.small,floating.environment='sidewaystable')
-@
-\clearpage
-
-\subsection{Rescaled tables}
-Specify a {\tt scalebox} value to rescale the table.
-
-<<>>=
-x <- x[1:20,]
-x.rescale <- xtable(x,label='tabrescaled',caption='A rescaled table')
-@
-
-<<results=tex>>=
-print(x.rescale, scalebox=0.7)
-@
-
-\subsection{Table Width}
-The {\tt tabularx} tabular environment provides more alignment options,
-and has a {\tt width} argument to specify the table width.
-
-Remember to insert \verb|\usepackage{tabularx}| in your \LaTeX preamble.
-
-<<>>=
-df.width <- data.frame(
-  "label 1 with much more text than is needed" = c("item 1", "A"),
-  "label 2 is also very long" = c("item 2","B"),
-  "label 3" = c("item 3","C"),
-  "label 4" = c("item 4 but again with too much text","D"),
-  check.names = FALSE)
-
-x.width <- xtable(df.width,
-  caption="Using the 'tabularx' environment")
-align(x.width) <- "|l|X|X|l|X|"
-@
-
-<<results=tex>>=
-print(x.width, tabular.environment="tabularx",
-  width="\\textwidth")
-@
-
-\section{Suppressing Printing}
-By default the {\tt print} method will print the LaTeX or HTML to standard
-output and also return the character strings invisibly.  The printing to
-standard output can be suppressed by specifying {\tt print.results = FALSE}.
-
-<<>>=
-x.out <- print(tli.table, print.results = FALSE)
-@
-
-Formatted output can also be captured without printing with the
-{\tt toLatex} method.  This function returns an object of class
-{\tt "Latex"}.
-
-<<>>=
-x.ltx <- toLatex(tli.table)
-class(x.ltx)
-x.ltx
-@
-
-\section{Acknowledgements}
-Most of the examples in this gallery are taken from the {\tt xtable}
-documentation.
-\section{R Session information}
-<<results=tex>>=
-toLatex(sessionInfo())
-@
-\end{document}