Ingrese el archivo Tex en el archivo knitr

Ingrese el archivo Tex en el archivo knitr

Estoy mostrando un ejemplo simple aquí solo para formular la pregunta.

\documentclass{article}

\begin{document}

<<>>=
library('ggplot2')
dataset <- diamonds
@

\begin{table}[htbp]
  \centering
  \begin{tabular}{c|c|c|c}
  \textbf{Name} & \textbf{Columns} \\\hline \hline
  dataset & \Sexpr{length(colnames(dataset))} \\
  \end{tabular}
  \caption{Repeated table}
\end{table}

\end{document}

Ahora estoy repitiendo esta tabla (tabla exacta) varias veces en el archivo. (Imagínese reemplazar el conjunto de datos con otro conjunto antes de llamar a esta tabla).

\documentclass{article}

\begin{document}

<<>>=
library('ggplot2')
dataset <- diamonds;
@

\input{table-file.tex}

\end{document}

Estoy poniendo toda la parte tabular en este archivo y luego la ingreso en varios lugares. Pero no puedo hacer que esto funcione. Me preguntaba si esto es posible. Cualquier enfoque mejor para hacer que esta mesa sea "modular".

Gracias

Respuesta1

A continuación se muestra un ejemplo que utiliza el proceso de archivo secundario knitr según la documentación de knitr yihui.name/knitr/demo/child.

Primero el nuevo archivo principal al que llamé 'knitr01.Rnw'

\documentclass{article}

\begin{document}

<<>>=
library('ggplot2')
dataset <- diamonds
@

<<child='child-knitr01.Rnw'>>=
@

<<>>=
dataset<-mtcars
@

<<child='child-knitr01.Rnw'>>=
@
\end{document}

Tenga en cuenta que ingresé al niño dos veces, cada una con un conjunto de datos diferente.

Y el archivo secundario al que llamé 'child-knitr01.Rnw'.

\begin{table}[htbp]
  \centering
  \begin{tabular}{c|c|c|c}
  \textbf{Name} & \textbf{Columns} \\\hline \hline
  dataset & \Sexpr{length(colnames(dataset))} \\
  \end{tabular}
  \caption{Repeated table}
\end{table}

Cuando se ejecuta primero a través de 'knit' y luego a través de 'pdflatex', se obtiene

ingrese la descripción de la imagen aquí

Para continuar con la demostración para que esté completa, esto también permite que los archivos secundarios ingresen nietos.

El knitr01.Rnw se cambia de la siguiente manera.

\documentclass{article}
\begin{document}
<<>>=
library('ggplot2')
dataset <- diamonds
title="These are diamonds"
@

<<child='child-knitr01.Rnw'>>=
@

<<>>=
dataset<-mtcars
title="These are cars"
@

<<child='child-knitr01.Rnw'>>=
@

\end{document}

Aquí está el archivo 'child-knitr01.Rnw' revisado

\begin{table}[htbp]
  \centering
  \begin{tabular}{c|c|c|c}
  \textbf{Name} & \textbf{Columns} \\\hline \hline
  dataset & \Sexpr{length(colnames(dataset))} \\
  \end{tabular}
  \caption{\Sexpr{paste(substr(capture.output(print(title)),5,50))}}
  % The 5 is to remove some leading R stuff (try with 1 to see why)
  % The 50 is chosen to be longer than the string
\end{table}

<<child='grand-child-knitr01.Rnw'>>=
@

Y aquí está el archivo 'grand-child-knitr01.Rnw'

Demonstration that you can call on 'grandchildren' files with knitr.

<<>>=
names(dataset)  
@

Y la salida es: ingrese la descripción de la imagen aquí

información relacionada