Hmisc :: latex не печатает заголовок с табличным объектом

Сначала я расскажу вам, что я пытаюсь создать в целом, на случай, если я ошибаюсь. У меня есть вложенная таблица, которую я хотел бы поместить как таблицу LaTeX в RStudio с помощью knitr. Я в порядке, пока не попытаюсь добавить подпись. Я попробовал пример на странице 9 в tables виньетке (ССЫЛКА).

Он работает без подписи, но когда я добавляю подпись, это не так. Он также работает с нетабличными объектами. Забавно то, что latex.default работает, но вызывает ошибку в файле Compile PDF RStudio / knitr и, судя по тому, что я прочитал, в любом случае вызывается latex; плюс таблица больше не округляется должным образом. Я пробовал latexTabular, но это тоже не округлено.

library(Hmisc); library(tables)
latex(head(mtcars), file="", caption="de")   #works

x <- tabular( (Species + 1) ~ (n=1) + Format(digits=2)*
         (Sepal.Length + Sepal.Width)*(mean + sd), data=iris )

latex(x, file="", caption="de") #no caption :(

В идеале я бы хотел иметь \caption{de} на выходе, но не могу понять, где я ошибаюсь.

Если это полезно, вот ввод и вывод:

> latex(x, file="", caption="de", label="tab1") 
\begin{tabular}{lccccc}
\hline
 &  & \multicolumn{2}{c}{Sepal.Length} & \multicolumn{2}{c}{Sepal.Width} \\ 
Species  & n & mean & sd & mean & sd \\ 
\hline
setosa  & $\phantom{0}50$ & $5.01$ & $0.35$ & $3.43$ & $0.38$ \\
versicolor  & $\phantom{0}50$ & $5.94$ & $0.52$ & $2.77$ & $0.31$ \\
virginica  & $\phantom{0}50$ & $6.59$ & $0.64$ & $2.97$ & $0.32$ \\
All  & $150$ & $5.84$ & $0.83$ & $3.06$ & $0.44$ \\
\hline 
\end{tabular}

person Tyler Rinker    schedule 13.09.2012    source источник
comment
Откуда tabular()?   -  person Josh O'Brien    schedule 13.09.2012
comment
@Josh, мои извинения, табличные данные взяты из пакета таблиц.   -  person Tyler Rinker    schedule 13.09.2012
comment
@Brandon Я не думаю, что xtable может обрабатывать вложенные таблицы, но я бы хотел ошибиться, так как xtable отлично подходит. Обычно я очищаю его стол, но я пытаюсь перейти к полностью воспроизводимым исследованиям и запустить все как один файл с помощью knitr.   -  person Tyler Rinker    schedule 13.09.2012
comment
Это никогда не бывает так просто, как кажется на первый взгляд :)   -  person Brandon Bertelsen    schedule 13.09.2012


Ответы (3)


Объект x из tabular () относится к классу tabular и отправляется в latex.tabular, у которого нет аргумента caption. Я предполагаю, что предполагаемый вариант использования находится в Sweave, которому будет поручено предоставить заголовок.

Однако на странице 22 есть пример использования аргумента "\\caption{.}" для параметров в виньетке таблиц. Кажется, это приносит успех:

 x <- tabular( (Species + 1) ~ (n=1) + Format(digits=2)*
          (Sepal.Length + Sepal.Width)*(mean + sd), data=iris )

 latex(x, file="", options = list( tabular="longtable", toprule="\\caption{This is a sample caption.}\\\\   \\toprule",  midrule="\\midrule\\\\[-2\\normalbaselineskip]\\endhead\\hline\\endfoot"))
\begin{longtable}{lccccc}
\caption{This is a sample caption.}\\   \toprule
 &  & \multicolumn{2}{c}{Sepal.Length} & \multicolumn{2}{c}{Sepal.Width} \\ 
Species  & n & mean & sd & mean & sd \\ 
\midrule\\[-2\normalbaselineskip]\endhead\hline\endfoot
setosa  & $\phantom{0}50$ & $5.01$ & $0.35$ & $3.43$ & $0.38$ \\
versicolor  & $\phantom{0}50$ & $5.94$ & $0.52$ & $2.77$ & $0.31$ \\
virginica  & $\phantom{0}50$ & $6.59$ & $0.64$ & $2.97$ & $0.32$ \\
All  & $150$ & $5.84$ & $0.83$ & $3.06$ & $0.44$ \\
\hline 
\end{longtable}
person IRTFM    schedule 13.09.2012
comment
Найти было несложно. Я искал слово: «подпись». Заставить его работать с моим ограниченным пониманием LaTeX - вот чего стоит плюс ». - person IRTFM; 13.09.2012

Мне неловко это признавать, но вся проблема заключалась в том, что я пытался заставить что-то внутри фрагмента кода, который мне не принадлежал. Я задыхаюсь от своей гордости помогать будущим искателям. Латексный материал идет снаружи. Итак, если вы пытаетесь построить таблицу выше как красиво отформатированную таблицу, это то, что вы ищете:

\begin{table}[ht]
\caption{This is a sample caption. \label{guy}}
<<desc, echo = FALSE, results = 'asis'>>=
x <- tabular( (Species + 1) ~ (n=1) + Format(digits=2)*
     (Sepal.Length + Sepal.Width)*(mean + sd), data=iris )
latex(x)
@
\end{table}
person Tyler Rinker    schedule 13.09.2012
comment
+1 Не нужно смущаться по этому поводу. Это хороший ответ и хороший запасной вариант, если вы не можете все это сделать в R. - person Andrie; 13.09.2012

Это должно сработать.

cat('\\begin{table}[ht]
    \\centering')
latex(tabularTable)
cat('\\caption{some caption}')
cat('\\label{tab:table1}')
cat('\\end{table}')
person bowen.li    schedule 29.08.2015