使用 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.xtable
。 pos
给出 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 以获取完全可重现的示例。
我正在努力使用 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.xtable
。 pos
给出 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 以获取完全可重现的示例。