多张桌子 Sweave/Latex

多张桌子 Sweave/Latex

我对 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

我只是想强烈推荐RStudio。它既可以作为独立应用程序分发,也可以作为 Web 服务分发。后者需要使用 Web 服务器(例如 apache)进行一些设置。它对 knitr 和 sweave 都提供了出色的支持,并且还提供了非常基本的“块”导航。请参阅此快照来自他们的网站。

在此处输入图片描述

答案4

你看过了吗这个帖子来自 Learning R 博客?作者使用 Brew 包创建了一份自动报告,但帖子中的一条评论使用 Sweave 和 LaTeX 做了同样的事情。听起来你正在尝试创建一份类似的报告。我能够将该示例改编为我的一份自动报告。

相关内容