我尝试编写一个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(...)
@
答案 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()
的输出)