是否可以通過Sweave生成一個LaTeX文檔,該文檔沒有預定義其元素的數量?我的意思是,假設我需要爲數據框中的每一行建立一個表格。文檔中的表格數量將取決於數據框中的行數。動態Sweave文檔
換言之,在for
循環內生成LaTeX元素。 Sweave會爲每一行建立一個表格。
這同樣適用於頁面或其他元素。是否有可能做到這一點?
是否可以通過Sweave生成一個LaTeX文檔,該文檔沒有預定義其元素的數量?我的意思是,假設我需要爲數據框中的每一行建立一個表格。文檔中的表格數量將取決於數據框中的行數。動態Sweave文檔
換言之,在for
循環內生成LaTeX元素。 Sweave會爲每一行建立一個表格。
這同樣適用於頁面或其他元素。是否有可能做到這一點?
這是否幫助:
\documentclass[a4paper,12pt]{article}
\usepackage{Sweave}
\begin{document}
<<echo=FALSE>>=
library(xtable)
df <- structure(list(ID = 2:6, home_pc = structure(c(2L, 6L, 1L, 3L,
5L), .Label = c("BY5 8IB", "CB4 2DT", "DH4 6PB", "KN4 5GH", "MP9 7GH",
"NE5 7TH", "VB2 4RF"), class = "factor"), start_pc = structure(c(4L,
3L, 4L, 2L, 1L), .Label = c("BV6 5PB", "CB3 5TH", "FC5 7YH",
"Home", "NA"), class = "factor"), end_pc = structure(c(1L, 3L,
3L, 3L, 2L), .Label = c("CB5 4FG", "GH6 8HG", "Home", "NA"), class = "factor")), .Names = c("ID",
"home_pc", "start_pc", "end_pc"), row.names = 2:6, class = "data.frame")
count = 1
end = 3
@
<<fun,echo=FALSE,eval=FALSE>>=
print(xtable(df))
@
<<echo=FALSE,results=tex>>=
for(i in 1:end)
{
print(xtable(df))
i <- i + 1
}
cat("\\newpage")
@
<<echo=FALSE,results=tex>>=
if(count < end)
<<fun>>
count = count + 1
cat("\\newpage")
@
<<echo=FALSE,results=tex>>=
if(count < end)
<<fun>>
count = count + 1
cat("\\newpage")
@
<<echo=FALSE,results=tex>>=
if(count < end)
<<fun>>
count = count + 1
cat("\\newpage")
@
\end{document}
快樂進入更多的細節,如果這是在正確的軌道!
編輯版本,使用mtcars作爲@Ramnath(比我手工製作的好多了)是[here](ftp://godesberg.homelinux.net/test.Rnw)。我已經嘗試過展示那些公認的更長時間的靈活性。 – vaettchen 2012-02-02 17:35:43
下面是一個簡短的方法來做同樣的事情。我在R
中使用mtcars
數據集,並將說明如何按照柱面數創建表。您可以使用Sweave
或knitr
(這是該塊上的新孩子)處理此文檔。讓我知道它是如何工作的。
\documentclass{article}
%\SweaveOpts{echo = F}
\begin{document}
<<load-libraries>>=
suppressMessages(require(plyr))
suppressMessages(require(xtable))
@
<<gen-tables, results = tex>>=
d_ply(mtcars, .(cyl), xtable, .print = TRUE)
@
\end{document}
使用'brew'中描述了一種很好的教程[本博客](http://learnr.wordpress.com/2009/09/09/brew-creating-repetitive-reports/) – baptiste 2012-02-02 20:20:05
是的,我相信在我的情況下,最好的方法是使用brew來生成tex文件。這樣我可以使用if,if和其他控制結構來動態生成tex文件。 – 2012-02-09 11:45:30