2010-10-07 5 views
32

Есть ли способ создать PDF-таблицу таблицы из R так же, как вы создаете график (то есть с помощью pdf() или ggsave())? Я понимаю, что есть способы с другими программами (с использованием sweave и т. Д.), Но я хотел бы получить его только от R.Создать таблицу в формате PDF

ответ

30

Да, есть возможность разместить текст в графиках и, следовательно, в pdf-устройствах.

Наилучшей оберткой для этого может быть функция textplot() в надежном пакете gplots Грега Варнса. Ниже начало разделе примеров его странице справки:

# 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

Спасибо, это, кажется, работает! – Tom

4

Существует также функция addtable2plot в пакете plotrix.

14

см. Также grid.table в gridExtra, используя сетку графики.

4

Я недавно хотел сделать это, но мне не понравился выходной формат grideExtra или textplot, поэтому я написал эту функцию, чтобы сделать это в латексе. Это немного работы ножовки и есть лучшие способы с sweave или knitr, но вы могли бы найти полезный изменить для ваших целей:

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)) 
} 
Смежные вопросы