2010-10-07 20 views
32

Gibt es eine Möglichkeit, ein PDF einer Tabelle aus R auf die gleiche Art und Weise zu erstellen, wie Sie ein Diagramm erstellen (zB mit pdf() oder ggsave())? Ich weiß, es gibt Möglichkeiten mit anderen Programmen (mit Sweave etc.), aber ich möchte es nur von R produzieren.Erstellen einer PDF-Tabelle

Antwort

30

Ja gibt es, wie Sie Text in Grafiken und damit in PDF-Geräte platzieren können.

Der netteste Wrapper dafür ist die textplot() Funktion in Greg Warnes vertrauenswürdigem gplots Paket. Unten ist der Beginn der Beispiele Abschnitt seiner Hilfeseite:

# show R version information 
textplot(version) 
# show the alphabet as a single string 
textplot(paste(letters[1:26], collapse=" ")) 

# show the alphabet as a matrix 
textplot(matrix(letters[1:26], ncol=2)) 

### Make a nice 4 way display with two plots and two text summaries 
data(iris) 
par(mfrow=c(2,2)) 
plot(Sepal.Length ~ Species, data=iris, border="blue", col="cyan", 
     main="Boxplot of Sepal Length by Species")  
plotmeans(Sepal.Length ~ Species, data=iris, barwidth=2, connect=FALSE, 
      main="Means and 95\% Confidence Intervals\nof Sepal Length by Species") 

info <- sapply(split(iris$Sepal.Length, iris$Species), 
       function(x) round(c(Mean=mean(x), SD=sd(x), N=gdata::nobs(x)),2)) 

textplot(info, valign="top" ) 
title("Sepal Length by Species") 

reg <- lm(Sepal.Length ~ Species, data=iris) 
textplot(capture.output(summary(reg)), valign="top") 
title("Regression of Sepal Length by Species") 

par(mfrow=c(1,1)) 
+0

Danke, das scheint zu funktionieren! – Tom

4

Es gibt auch die addtable2plot Funktion im plotrix Paket.

14

Siehe auch grid.table in gridExtra, mit Rastergrafiken.

4

Ich wollte dies vor kurzem tun, aber nicht das Ausgabeformat von grideExtra oder textplot gefallen, also schrieb ich diese Funktion, um es in Latex zu tun. Es ist ein bisschen wie ein Hack Job und es gibt bessere Möglichkeiten, um mit sweave oder knitr, aber Sie finden es möglicherweise nützlich für Ihre Zwecke zu ändern:

createPDF <- function(xx, name=deparse(substitute(xx))){ 
    require(xtable) 
    tt <- print(xtable(xx), type='latex') 
    texfile <- paste0('./reports/', name, '.tex') 
    cat(
    '\\documentclass[12pt]{report} 
\\usepackage[landscape]{geometry} 
\\date{} 
\\begin{document}', tt, '\\end{document}', sep='', 
    file=texfile 
) 
    ## pdflatex from texlive package for linux converts .tex to .pdf 
    system(paste0('pdflatex ', '-output-directory ./reports ', texfile)) 
}