2015-06-27 2 views
6

Я пытаюсь захватить вывод из некоторого R-кода и заменить его на латексный код.Вывод Capture R и замена кодом LaTeX

Если запустить этот код:

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

x 

Это выход:

[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} " 

Мне нужно заменить строку 5 с этим:

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

Как я могу это сделать ?

+2

'x <- sub (" \\ caption {Основной заголовок таблицы.} "," \\ подпись [короткая подпись] {Основной заголовок таблицы.} ", Fixed = TRUE, x)' ? –

+1

@ StevenBeaupré хотите добавить это как ответ? – luciano

ответ

5

Try:

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

Это немного отличается от того, что вы имели в виду, но, возможно, вы могли бы просто использовать xtable, который имеет caption.width аргумент, например:

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

выход будет не порт точно, к чему вы собираетесь, но, возможно, вы могли бы согнуть это в своих целях, если вы предпочитаете более сжатый код; от ?print.xtable:

Надпись будет помещена в «parbox» от указанной ширины, если caption.width не NULL, и типа = «Латекс». Значение по умолчанию - NULL.

Вот результат:

% 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} 

Вам также придется возиться с другими параметрами (например, digits), чтобы получить точное форматирование остальной части таблицы, совпадающее с stargazer , в зависимости от того, что именно имеет в виду форматирование.