2015-06-27 5 views
6

Ich versuche, die Ausgabe von einigen R-Code erfassen und durch Latex-Code ersetzen.Capture R-Ausgabe und ersetzen mit LaTeX-Code

Wenn Sie diesen Code ausführen:

library(stargazer) 
x <- capture.output(stargazer(mtcars[1:5, 1:3], summary = FALSE, title="The main caption of the table.")) 

x 

Dies ist die Ausgabe:

[1] ""                           
[2] "% Table created by stargazer v.5.1 by Marek Hlavac, Harvard University. E-mail: hlavac at fas.harvard.edu" 
[3] "% Date and time: Sat, Jun 27, 2015 - 11:36:07"                
[4] "\\begin{table}[!htbp] \\centering "                  
[5] " \\caption{The main caption of the table.} "                
[6] " \\label{} "                        
[7] "\\begin{tabular}{@{\\extracolsep{5pt}} cccc} "                
[8] "\\\\[-1.8ex]\\hline "                      
[9] "\\hline \\\\[-1.8ex] "                      
[10] " & mpg & cyl & disp \\\\ "                     
[11] "\\hline \\\\[-1.8ex] "                      
[12] "Mazda RX4 & $21$ & $6$ & $160$ \\\\ "                  
[13] "Mazda RX4 Wag & $21$ & $6$ & $160$ \\\\ "                 
[14] "Datsun 710 & $22.800$ & $4$ & $108$ \\\\ "                 
[15] "Hornet 4 Drive & $21.400$ & $6$ & $258$ \\\\ "                
[16] "Hornet Sportabout & $18.700$ & $8$ & $360$ \\\\ "               
[17] "\\hline \\\\[-1.8ex] "                      
[18] "\\end{tabular} "                       
[19] "\\end{table} " 

Ich brauche Linie 5 mit diesem ersetzen:

" \\caption[short caption]{The main caption of the table.} " 

Wie kann ich dies tun ?

+2

'x <- sub (" \\ caption {Die Hauptüberschrift der Tabelle.} "," \\ caption [kurze Überschrift] {Die Hauptüberschrift der Tabelle.} ", Behoben = TRUE, x)' ? –

+1

@ StevenBeaupré möchte das als Antwort hinzufügen? – luciano

Antwort

5

Versuchen:

x <- sub("\\caption{The main caption of the table.}", 
     "\\caption[short caption]{The main caption of the table.}", fixed = TRUE, x) 
0

Dies ist ein wenig anders als das, was Sie im Sinn hatte, aber vielleicht könnten Sie einfach xtable verwenden, die eine caption.width Argument hat, zum Beispiel:

print.xtable(xtable(mtcars[1:5, 1:3], 
        caption="The main caption of the table"), 
      caption.width="10cm", 
      caption.placement="top") 

Der Ausgang wird nicht port genau zu was Sie gehen, aber vielleicht könnten Sie dies zu Ihren Zwecken biegen, wenn Sie den prägnanten Code bevorzugen; von ?print.xtable:

Die Beschriftung wird in einem "parbox" der angegebenen Breite gebracht werden, wenn caption.width nicht NULL und type = "Latex" ist. Standardwert ist NULL.

Hier ist der Ausgang:

% latex table generated in R 3.1.3 by xtable 1.7-4 package 
% Tue Jun 30 14:52:06 2015 
\begin{table}[ht] 
\centering 
\parbox{5cm}{\caption{The main caption of the table}} 
\begin{tabular}{rrrr} 
    \hline 
& mpg & cyl & disp \\ 
    \hline 
Mazda RX4 & 21.00 & 6.00 & 160.00 \\ 
    Mazda RX4 Wag & 21.00 & 6.00 & 160.00 \\ 
    Datsun 710 & 22.80 & 4.00 & 108.00 \\ 
    Hornet 4 Drive & 21.40 & 6.00 & 258.00 \\ 
    Hornet Sportabout & 18.70 & 8.00 & 360.00 \\ 
    \hline 
\end{tabular} 
\end{table} 

Sie werden auch zu Chaos mit den anderen Optionen um (zB digits) die genaue Formatierung des Restes der Tabelle zu erhalten, die passend aus stargazer , abhängig davon, was genau die Formatierung ist, die Sie im Sinn hatten.