我对 LaTeX 和 Sweave 还很陌生,但我很高兴当它与 R 结合起来时可以让我的生活变得简单得多。
我希望做的事情:创建多个交叉表,很可能是循环创建。因此,表格的数量不会提前确定,我希望每个表格之间有一个分页符。最后,就目前而言,我希望将其制作成报告而不是演示文稿(Beamer)。
我的问题:我认为这是可能的,但在 Sweave 或 LaTeX 中更容易实现吗?我应该如何开始?在开始和运行的过程中我遇到了一些困难,但我已经能够编写一些非常基本的示例。
这将是我用 LaTeX 编写的第一份文档,因此我愿意接受任何建议。
答案1
看一下这个xtable
包,它可以整齐地打印 LaTeX 表格。我经常用它来打印 Sweave 自动生成的报告。
以下是在 Sweave 文档中打印一些 LaTeX 表格的玩具示例
<<echo=FALSE,print=FALSE,results=tex>>
## generate an example set of tables
library(xtable)
data(tli)
my.tables <- list()
for(iTable in 1:20){
my.tables[[iTable]] <- tli[1:20 + iTable,]
}
## print these out, with page breaks in between
for(iTable in 1:20){
print(xtable(my.tables[[iTable]]))
cat('\\clearpage\n')
}
@
答案2
这可能会给你一个印象,它是如何工作的(或者更好:我会怎么做:-)
以下是您的 Sweave 文件“tstSweave.Rnw”(使用此文件http://gist.github.com/492318如果你想尝试一下)。
\documentclass{article}
\begin{document}
lalalala \newline\newline
<<echo = FALSE, results = tex>>=
library(xtable)
df <- data.frame(x = rbinom(100, 1, 0.2),
y = rbinom(100, 1, 0.6),
g = sample(1:10,100, replace = TRUE))
for(i in unique(df$g)){
sub <- subset(df, g == i)
mytab <- with(sub, table(x, y))
cat(paste("Group ",i, ""))
print(xtable(mytab))
cat(" \\clearpage \\pagebreak ")
}
@
lalalala
\end{document}
在 R 中,您可以使用 Sweave() 函数:
## set your working directory
setwd("d:/tmp")
Sweave(file = "tstSweave.Rnw")
这将为你提供一个新文件:tstSweave.txt
pdflatex tstSweave.tex
这将为您提供一个 PDF 文件:tstSweave.pdf
就是这样。
答案3
答案4
你看过了吗这个帖子来自 Learning R 博客?作者使用 Brew 包创建了一份自动报告,但帖子中的一条评论使用 Sweave 和 LaTeX 做了同样的事情。听起来你正在尝试创建一份类似的报告。我能够将该示例改编为我的一份自动报告。