使用 tables + knitr for latex 的简单示例

Simple example of using tables + knitr for latex

我正在努力使用 tables 包,可打包文档中的所有示例都非常复杂,其中 none 对我来说适用于 knitr 和乳胶。有人可以帮忙在 header 中显示一个带有一些公式和多行标签的简单 table 吗?

像这样:

df <- data.frame(matrix(1:9, nrow = 3))
colnames(df) <- c("first column", "second \frac{1}{2}", "third column first line \ second line")

提前致谢

如果您希望 table 为 LaTeX 样式,我认为使用 RMarkdown 是不可能的。但是,当您在 .Rnw 文件中编写代码时,您可以使用 xtable 包轻松地做到这一点:

\documentclass{article}
\begin{document}
<<>>=
library("xtable")
df <- data.frame(matrix(1:9, nrow = 3))
colnames(df) <- c("first column", "second $\frac{1}{2}$",
                  "third column")
@
<<xtable, results = "asis">>=
print(xtable(df), floating = TRUE,
      sanitize.colnames.function = identity, type = "latex")
@
\end{document}

可以使用 xtable 包在 LaTeX 中为 table 创建 multi-line headers。这些可以从 .Rmd 或 .Rnw 文件编译。基于 mattw 的示例并在 xtable:

print 方法中使用 add.to.row
df <- data.frame(matrix(1:50, nrow = 10))

print(
  xtable(df),
  include.rownames = FALSE,
  include.colnames = FALSE,
  add.to.row = list(
    pos = list(0),
    command = c(
      "& \multicolumn{4}{c}{4 column header} \\
       \cline{2-5}
      col1 & col2 & col3 & col4 & col5 \\ "
    )
  )
)

请注意,add.to.row 需要一个包含两个元素的列表:pos 和 command。第一个必须是列表,第二个是字符串或向量,请参见 ?print.xtablepos 给出 LaTeX 插入的行号,command 是插入。格式化时要小心,因为如果您不输入空格或 \n.

,它将 运行 直接放入第一列的下一个单元格

有很多自定义选项,允许您通过一些调整创建非常复杂的 table。

print(
  xtable(df),
  include.rownames = FALSE,
  include.colnames = FALSE,
  hline.after = c(-1,0),
  add.to.row = list(
    pos = list(0,5,10),
    command = c(
      "& \multicolumn{4}{c}{4 column header} \\
       \cline{2-5}
      col1 & col2 & col3 & col4 & col5 \\ ",
      "\hline \multicolumn{5}{l}{Separator in table.} \\ \hline",
      "\hline \multicolumn{5}{l}{Notes at end of table.} \\ "
    )
  )
)

在这个例子中,我更改了 xtable 放置 \hline 的默认设置,允许我在注释上方添加最后一个 \hline - 对于解释 [= 中的上标很有用46=].

另请注意 \cline{2-5} 的使用,让我在第 2 - 5 列上划线。

请参阅 gist 以获取完全可重现的示例。