2015-07-18 10 views
5

Ho una serie di tabelle che sto generando con l'uso del codice simile al frammento di seguito:tabelle Generazione Pander in un ciclo in RMarkdown in Rstudio

```{r tables, echo=TRUE, eval=TRUE} 
require(reshape2); require(pander) 
data("mtcars") 
data("AirPassengers") 

dta_lst <- list(mtcars, AirPassengers) 
for (i in 1:length(dta_lst)) { 
    pander(melt(head(dta_lst[[i]], n = 2), varnames = c("Something"), 
      value.name = "Something else"), 
      caption = paste("Some table for: ", class(dta_lst[[i]]))) 
} 
``` 

Quando eseguo il codice Produce l'uscita desiderata (naturalmente, l'esempio fornito ha poco senso, a mio dati corretta mi sciolgo i dati in maniera sensibile):

--------------------------- 
variable Something else 
---------- ---------------- 
    mpg   21  

    mpg   21  

    cyl   6   

    cyl   6   

    disp   160  

    disp   160  

    hp   110  

    hp   110  

    drat   3.9  

    drat   3.9  

    wt   2.62  

    wt   2.875  

    qsec   16.46  

    qsec   17.02  

    vs   0   

    vs   0   

    am   1   

    am   1   

    gear   4   

    gear   4   

    carb   4   

    carb   4   
--------------------------- 

Table: Some table for: data.frame 


---------------- 
Something else 
---------------- 
     112  

     118  
---------------- 

Table: Some table for: ts 

Quando tento a lavorare a maglia il codice Rstudio tabelle Pander non compaiono:

absent tables

Naturalmente, senza il ciclo il comando pander funziona correttamente e genera le tabelle che sono ordinatamente elaborate in un documento HTML.

+2

In breve, disattivare l'impostazione 'knitr.auto.asis' in' panderOptions' e utilizzare l'opzione 'results = 'asis'' chunk in 'knitr'. Fornirò anche una risposta più dettagliata presto, fino ad allora, vedere questa discussione relativa: https://github.com/Rapporter/pander/issues/142#issuecomment-66619769 – daroczig

+0

@daroczig, grazie mille per mostrare l'interesse. Ero solito suggerire una combinazione e funzionava come pubblicizzato. Su un argomento più generico, 'panderOptions ('knitr.auto.asis', FALSE)' avrà un impatto sul modo in cui le altre tabelle 'pander' sono trattate nel file Rmd? Oltre al ciclo descritto sopra, sto usando pander qua e là per ricavare altre tabelle standard. – Konrad

risposta

1

Nel ciclo for non c'è "schermata di output" a meno che non si usi la funzione print(x).

for (i in 1:4) { i } non visualizza nulla

for (i in 1:4) {print(i)} visualizza i numeri 1 2 3 e 4

Soluzione: nel ciclo for costruire la tabella (utilizzando knitt) e assegnare in una variabile. Quindi stampare questa variabile usando la funzione print(). Ricorda. È necessario aggiungere righe vuote prima e dopo la tabella var: utilizzare la funzione incolla all'interno di print()

+0

In particolare per pandoc, è necessario usare 'cat' invece di' print'. –

Problemi correlati