2012-09-13 13 views
6

Primero le diré lo que intento hacer una imagen completa en caso de que lo esté haciendo mal. Tengo una tabla anidada que me gustaría poner como tabla LaTeX dentro de RStudio usando knitr. Estoy bien hasta que intento agregar un título. Probé el ejemplo en la página 9 en la viñeta tables(LINK).Hmisc :: latex no imprime el título con el objeto tabular

Funciona sin el título pero cuando agrego el título no. También funciona con un objeto no tabular. Lo curioso es que latex.default funciona pero causa un error en el PDF de compilación de RStudio/knitr y de lo que leo se llama por latex; además, la mesa ya no se redondea apropiadamente. Intenté latexTabular pero eso tampoco se redondea apropiadamente.

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 :(

Idealmente me gustaría ser capaz de tener \caption{de} en la salida, pero no puede averiguar dónde voy mal.

En caso de que sea útil en este caso es la entrada y salida:

> 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} 
+0

¿De dónde viene 'tabular()'? –

+0

@Josh mi disculpa tabular proviene del paquete de tablas. –

+1

@Brandon No creo que xtable pueda manejar tablas anidadas, pero me encantaría estar equivocado, ya que xtable ha sido genial de usar. Normalmente me gustaría que fuera a la mesa, pero estoy tratando de avanzar hacia una investigación totalmente reproducible y ejecutar todo como un archivo con knitr. –

Respuesta

6

El objeto de x tabular() de la clase es tabular y está siendo enviados a latex.tabular que no tiene argumento del subtítulo. Supongo que su caso de uso previsto está dentro de Sweave, que se encargaría de suministrar el título.

Sin embargo, hay un ejemplo en la página 22 de usar un argumento "\\caption{.}" para las opciones en las tablas viñetas. Esto parece producir el éxito:

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} 
+0

Eso funciona DWin –

+0

Encontrar no fue difícil. Busqué en la palabra: 'título'. Lograr que funcione con mi comprensión limitada de LaTeX es lo que valió la pena "+ '. –

9

Me da vergüenza admitirlo, pero todo el problema soy yo estaba tratando de forzar algo dentro del trozo de código que no le pertenecía. Me estoy ahogando en mi orgullo por ayudar a futuros buscadores. El material de látex va por fuera. Así que si usted está tratando de trazar la tabla anterior como una tabla con un formato agradable esto es lo que está buscando:

\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} 
+0

+1 No es necesario que se avergüence de esto. Esta es una buena respuesta y una buena alternativa si no puede hacerlo todo en R . – Andrie

0

Esto debería funcionar.

cat('\\begin{table}[ht] 
    \\centering') 
latex(tabularTable) 
cat('\\caption{some caption}') 
cat('\\label{tab:table1}') 
cat('\\end{table}') 
Cuestiones relacionadas