2012-03-14 60 views
0

我有一個函數可以生成不同維度的數據幀列表。然後,我想創建一個PDF文件,按順序顯示這個輸出。數據幀列表爲pdf

df1 <- data.frame(c(1,2,3,4,5),c("a","b","c","d","e")) 
names(df1) <- c("no","letter") 

df2 <- data.frame(c(1,2,3,4,5),c("a","b","c","d","e"),c("a","b","c","d","e")) 
names(df2) <- c("no","letter1","letter2") 

outputs <- list(df1,df2) 

是否有這將是適合這個還是可以使用的功能,如textplot從GDATA包,然後導出爲PDF包?

+0

您是否考慮Sweave或knitr,或者這不是一個選項? – johannes 2012-03-14 10:16:50

+0

我知道Sweave,但不知道如何使用它。 knitr我不知道,會擡頭看。在哪些情況下,這不是一種選擇? – BuckyOH 2012-03-14 10:33:12

+0

如詹姆斯已經指出的那樣,如果你不想使用乳膠,它可能不會成爲一種選擇。 – johannes 2012-03-14 10:56:57

回答

3

這是一個使用Sweave的最小例子。

創建一個名爲test.Rnw文件,其中包含:

\documentclass[a4paper,11pt]{article} 

\begin{document} 

<<echo=F>>= 
df1 <- data.frame(c(1,2,3,4,5),c("a","b","c","d","e")) 
names(df1) <- c("no","letter") 

df2 <- data.frame(c(1,2,3,4,5),c("a","b","c","d","e"),c("a","b","c","d","e")) 
names(df2) <- c("no","letter1","letter2") 

outputs <- list(df1,df2) 

outputs 
@ 

\end{document} 

然後在命令行稱:

R CMD R Sweave test.Rnw 
pdflatex test.Rnw 

也許,讓你開始。

+0

請注意,你必須安裝一個乳膠系統 – James 2012-03-14 10:54:50

2

包gridExtra提供grid.table(和tableGrob不是即時打印),這是非常強大的。
http://cran.r-project.org/web/packages/gridExtra/index.html
這裏有grid.table的一些例子:
http://rwiki.sciviews.org/doku.php?id=tips:graphics-grid:table

library(gridExtra) 

    df1 <- data.frame(c(1,2,3,4,5),c("a","b","c","d","e")) 
    names(df1) <- c("no","letter") 

    df2 <- data.frame(c(1,2,3,4,5),c("a","b","c","d","e"),c("a","b","c","d","e")) 
    names(df2) <- c("no","letter1","letter2") 

    outputs <- list(df1,df2) 
    pdf(file="filename.pdf") 
    plyr::l_ply(outputs, grid.table) 
    dev.off() 
+0

而不是for循環嘗試'plyr :: l_ply(outputs,grid.table)' – baptiste 2012-03-14 19:18:12

+0

@baptiste:謝謝你的技巧(並非常感謝你爲gridExtra; marrange( )節省了我的工作時間) – broussea 2012-03-17 20:56:10

3

一種可能的方式是畫出你的數據集的表(如果你想避免TEX)。

library(gridExtra) 

pdf(file="file_name.pdf", width=20) 
    grid.newpage() 
    grid.draw(tableGrob(head(iris, 10), name="test")) 
dev.off() 

enter image description here

一如往常,在R,有一千種方式來做事。

plot(...) 
text(...,xtable(...)) 

的xtable功能還可以用於改善jmsigner的回答外觀。