Каждая xtable, созданная в R-loops, должна иметь окружение \begin{table}..\end{table} в Sweave.

Я пытаюсь написать R-функцию, которая создает xtables в цикле. Позже я хочу вызвать свою функцию в документе Sweave, но один фрагмент не может поддерживать несколько таблиц. Мне пришлось бы поместить каждую таблицу в один блок и обернуть его кодом Latex \begin{table} ... \end{table}. Итак, мне интересно, можно ли как-то вызвать Sweave/knitr из цикла R-функции и добавить \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(...)
@

person Novice    schedule 23.01.2015    source источник


Ответы (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())

person Brian Diggs    schedule 23.01.2015