我在Ubuntu上运行R v2.14.1.我正在编写一个脚本,它将生成一个数据框,代表一个结果表.
我想将这个'table'输出为.tex文件,以便我可以创建一个'学术出版物'质量表,用于打印.我听说过Sweave(并阅读了一些关于Sweave的概述文档) - 所以我认为这是继续进行的方式.然而,据说我还没有看到一个示例,其中Sweave将数据帧输出为tex文件 - 到目前为止我看到的所有Sweave示例似乎都是人为的,而不是我可以构建的东西.
我可以遵循一些指导方针,从数据框输出tex吗?另外,如果我直接从我的R脚本构建TeX字符串并将字符串保存到文件,它会更简单(更直接)吗?(我不清楚,Sweave提供的手动"手动"手动构建TeX字符串).
Rom*_*rik 30
该xtable软件包中有一些如何生成表的示例 - 请参阅vignette.在编写块时,请确保将块设置为<<results=tex>>.见Sweave例子,例如,本.
这就是我输出data.frame的方法.
<<results=tex>>
xtable(my.data.frame)
@
Run Code Online (Sandbox Code Playgroud)
原始结果看起来像这样:
> xtable(my.data.frame)
% latex table generated in R 2.14.1 by xtable 1.6-0 package
% Tue Feb 14 10:03:03 2012
\begin{table}[ht]
\begin{center}
\begin{tabular}{rllr}
\hline
& p & q & r \\
\hline
1 & condition\_a & grp\_1 & 3 \\
2 & condition\_a & grp\_1 & 3 \\
3 & condition\_a & grp\_1 & 4 \\
4 & condition\_a & grp\_1 & 1 \\
5 & condition\_b & grp\_1 & 4 \\
6 & condition\_b & grp\_1 & 3 \\
7 & condition\_b & grp\_1 & 5 \\
8 & condition\_b & grp\_1 & 5 \\
9 & condition\_a & grp\_2 & 4 \\
10 & condition\_a & grp\_2 & 1 \\
11 & condition\_a & grp\_2 & 1 \\
12 & condition\_a & grp\_2 & 1 \\
13 & condition\_b & grp\_2 & 5 \\
14 & condition\_b & grp\_2 & 1 \\
15 & condition\_b & grp\_2 & 5 \\
16 & condition\_b & grp\_2 & 2 \\
\hline
\end{tabular}
\end{center}
\end{table}
Run Code Online (Sandbox Code Playgroud)
Vin*_*ynd 17
我经常使用包中的latex和describe
函数Hmisc,这允许进行大量的微调.
library(Hmisc)
d <- data.frame(a=LETTERS[1:5], x=rnorm(5))
latex(d, file="") # If you want all the data
latex(describe(d), file="") # If you just want a summary
Run Code Online (Sandbox Code Playgroud)
小智 6
使用kable()from knitrpackage 将数据帧从 R 转换为 LaTeX 表。kableExtrapackage 允许进行更多微调。
# Toy example
df <- tibble(x = c(1:3),
y = c(4:6))
# Plain latex output
kable(df, "latex")
# With Booktabs
kable(df, "latex", booktabs = TRUE)
Run Code Online (Sandbox Code Playgroud)
就个人而言,当我输出汇总表而不是编写报告时,我喜欢在 R 中管理所有代码,而不是 Rnw 文件,通过使用 ,cat()这sink()允许您在当前环境中工作,而不是强制加载所有内容,每次需要重新运行文档时都会重新加载。此外,它还使使用 R 来“复制”、“粘贴”或“循环”大量数据或数据列表变得更加容易。但应该指出的是,这在某种程度上打破了可重复研究的理念。
下面是我将放入 R 文件中的内容的示例(当然,请记住 \ 需要转义 \:
dat <- list()
for(i in 1:15) {
dat[[i]] <- sample(c("A","B"),1000,replace=TRUE) # Dummy data
}
sink("temp.Rnw")
cat("
\\documentclass{article}
\\usepackage{Sweave}
\\begin{document}
")
# Print a lot of tables
invisible(
lapply(dat,
function(x)
print(xtable(table(x),caption=names(x)),table.placement="!htp"))
)
cat("
\\end{document}
")
sink()
Sweave("temp.Rnw")
compilePdf("temp.Rnw")
Run Code Online (Sandbox Code Playgroud)