如何将数据框中的值直接输入到sweave latex pdf处理中

时间:2016-12-07 21:14:24

标签: r latex sweave

我在Rstudio-Sweave中有以下代码生成一个简单的表:

\documentclass{article}

\begin{document}
\SweaveOpts{concordance=TRUE}
\begin{table}[]
\centering
\caption{My caption}
\label{my-label}
\begin{tabular}{|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|}
\hline
5  & 6  & 11 & 22 & 33 & 44 & 55 & 55 & \multicolumn{4}{l|}{name1} & 66 & 777 & 888 \\ \hline
v1 & v2 & v3 & v4 & v5 & v6 & v7 & v8 & \multicolumn{4}{l|}{name2} & v9 & v10 & v11 \\ \hline
\end{tabular}
\end{table}



\end{document}

如何编辑代码,以便值'5','6','v1' - 'v11'等直接从我已经创建的data.frame中获取值。例如,如果我有名为'DATAFRAME'的数据框,可以做这样的事情(它不起作用)但是肯定有这样简单的东西可以做到吗?

\documentclass{article}

\begin{document}
\SweaveOpts{concordance=TRUE}
\begin{table}[]
\centering
\caption{My caption}
\label{my-label}
\begin{tabular}{|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|}
\hline
DATAFRAME[1,1]  & 6  & 11 & 22 & 33 & 44 & 55 & 55 & \multicolumn{4}{l|}{name1} & 66 & 777 & 888 \\ \hline
v1 & v2 & v3 & DATAFRAME[4,4] & v5 & v6 & v7 & v8 & \multicolumn{4}{l|}{DATAFRAME[4,5]} & v9 & v10 & v11 \\ \hline
\end{tabular}
\end{table}



\end{document}

我用表中的值替换了表中的值,这些值是从数据框中动态获取的 - 可以这样做吗?

1 个答案:

答案 0 :(得分:0)

尝试使用\Sexpr{DATAFRAME[1,1]}\Sexpr{DATAFRAME[4,4]}等。这将从数据框中提取您指定的值。但是,如果您要尝试一次制作整个表格,请务必查看Kristofersen和Imo提到的knitrxtable中的选项。比重复\Sexpr{}次呼叫容易得多。

编辑: 请尝试以下代码,看看它是否适用于您的计算机。我只是将其设置为使用DATAFRAME的随机数据集。

\documentclass{article}

\begin{document}

<<data, echo = FALSE>>=
set.seed(100)
DATAFRAME <- data.frame(round(rnorm(n = 10),2),
                        round(rnorm(n = 10),2),
                        round(rnorm(n = 10),2),
                        round(rnorm(n = 10),2),
                        round(rnorm(n = 10),2))
@

\SweaveOpts{concordance=TRUE}
\begin{table}[]
\centering
\caption{My caption}
\label{my-label}
\begin{tabular}{|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|}
\hline
\Sexpr{DATAFRAME[1,1]}  & 6  & 11 & 22 & 33 & 44 & 55 & 55 & \multicolumn{4}{l|}{name1} & 66 & 777 & 888 \\ \hline
v1 & v2 & v3 & \Sexpr{DATAFRAME[4,4]} & v5 & v6 & v7 & v8 & \multicolumn{4}{l|}{\Sexpr{DATAFRAME[4,5]}} & v9 & v10 & v11 \\ \hline
\end{tabular}
\end{table}

\end{document}