2010-10-07 35 views
32

Có cách nào để tạo ra một tệp PDF của bảng từ R theo cùng cách bạn tạo ra một cốt truyện (ví dụ: bằng pdf() hoặc ggsave()) không? Tôi nhận ra có nhiều cách với các chương trình khác (sử dụng sweave vv), nhưng tôi muốn sản xuất nó chỉ từ R.Tạo một bảng PDF

Trả lời

30

Có như bạn có thể đặt văn bản vào đồ thị và do đó thành các thiết bị pdf.

Trình bao bọc đẹp nhất cho việc này có thể là chức năng textplot() trong gói tin gplots đáng tin cậy của Greg Warnes. Dưới đây là phần bắt đầu của phần ví dụ trong trang trợ giúp:

# 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

Cảm ơn, điều này dường như được làm việc! – Tom

4

Ngoài ra còn có hàm addtable2plot trong gói lôgô.

14

xem thêm grid.table trong gridExtra, sử dụng đồ họa lưới.

4

Gần đây tôi muốn thực hiện điều này nhưng không thích định dạng đầu ra của grideExtra hoặc textplot vì vậy tôi đã viết chức năng này để làm điều đó bằng latex. Đó là một chút của một công việc hack và có những cách tốt hơn với sweave hoặc knitr, nhưng bạn có thể tìm thấy nó hữu ích để sửa đổi cho mục đích của bạn:

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)) 
}