如何循环遍历 R 对象中的块

如何循环遍历 R 对象中的块

我想使用 TeX 排版一份基于 R 对象(数据框)数据的报告。想法是从 R 数据框的每一行打印出一个漂亮的 TeX 表格。

就像是

\begin{tabular}{ l c r }
   A1 & B1 & C1  \\
\end{tabular}

\begin{tabular}{ l c r }
   A2 & B2 & C2  \\
\end{tabular}

\begin{tabular}{ l c r }
   A3 & B3 & C3  \\
\end{tabular}

请考虑以下 MWE

\documentclass{article}

\begin{document}

<<prepare data>>=
one   <- c("A1","B1","C1")
two   <- c("A2","B2","C2")
three <- c("A3","B3","C3")
df <- data.frame(one,two,three)
@

<<loop data>>=
for (i in 1:nrow(df)) {
  print(df[i])
}
@

\end{document}

产生

在此处输入图片描述

如何使用 TeX 排版 R 循环输出的值?换句话说,如何使用\loop...\repeatTeX 处理 R 循环变量。

答案1

您可以使用包裹:

<<loop-data, results='asis'>>=
library(xtable)
for (i in 1:nrow(df)) {
  print(xtable(t(df[i])))
}
@

或者使用kable()函数针织品

<<loop-data, results='asis'>>=
for (i in 1:nrow(df)) {
  kable(t(df[i]), row.names=FALSE)
}
@

knitr 中的 kable()

关键是块选项results='asis'

相关内容