在R循环中生成的每个xtable都应该在Sweave中具有\ begin {table} .. \ end {table}环境

时间:2015-01-23 17:17:04

标签: loops knitr xtable

我尝试编写一个R函数,它在循环中生成xtables。后来我想在Sweave文档中调用我的函数 - 但是单个块​​不能支持多个表。我必须将每个表放在一个块中并用Latex Code \ begin {table} ... \ end {table} 包装。 所以我想知道,是否有可能以某种方式在R函数的循环内调用Sweave / knitr并添加 \ begin {table} .. \ end {table} 在每个xtable附近? 或者是否可以以某种方式将每个xtable从循环发送到具有 \ begin {table} ... \ end {table} 环境的块?

我的功能的一个小例子:

multiple_tables_Loop<-function(...){

(....) ##Some necessary calculations to produce a data frame

  for(j in 1:m){
    for(i in 1:n){

      a<-data.frame(...)   

      table<-xtable(a)

      print(table)
     } 
   }
 }

在Sweave中我会调用函数:

<<Hallo_Table,results='aisis'>>
 multiple_tables_Loop(...)
@

1 个答案:

答案 0 :(得分:1)

我对你的问题感到困惑。 xtable包含\begin{table} / \end{table}对。你可以把多个表放在一个代码块中(对于Sweave和knitr .Rnw文件)。可能只是你的块头中有拼写错误的'asis'吗?

显示xtable确实包含\begin{table} / \end{table}

> xtable(data.frame(x=1))
% latex table generated in R 3.1.2 by xtable 1.7-4 package
% Fri Jan 23 11:12:47 2015
\begin{table}[ht]
\centering
\begin{tabular}{rr}
  \hline
 & x \\ 
  \hline
1 & 1.00 \\ 
   \hline
\end{tabular}
\end{table}

一个简单的.Rnw

文件
<<results="asis">>=
library("xtable")
xtable(data.frame(x=1))
xtable(data.frame(y=1))
@

正确地给出了两个表格。

如果拼写错误不是问题,则需要一个完整的,最低限度可重复的示例以及R和所有包的版本号(sessionInfo()的输出)