2016-09-22 27 views
5

Pracuję raport z RStowndown i lateksem. Muszę wydrukować grupę tabel przy użyciu knitr::kable, ale nie drukuj, gdy wewnątrz pętli for.R: dlaczego kable nie drukuje wewnątrz pętli for?

To jest mój kod:

--- 
title: "project title" 
author: "Mr. Author" 
date: "2016-08-30" 
output: 
    pdf_document: 
    latex_engine: xelatex 
bibliography: biblio.bib 
header-includes: 
    - \usepackage{tcolorbox} 
--- 

Text and chunks that run ok. 

```{r loadLibraries} 
require(data.table) 
require(knitr) 
``` 

## Try to print a group of tables from split 

```{r results = "asis"} 
t1 <- data.table(a = sample(letters, 10, T), b = sample(LETTERS[1:3], 10, T)) 
t2 <- split(t1, t1$b) 

for (i in 1:length(t2)){ 
    kable(t2[[i]], col.names = c("A", "B")) 
} 
``` 

To nie ma znaczenia, czy mogę używać results = "asis" lub jeśli pominąć go całkowicie, drukuje nic do dokumentu.

Próbowałem załączając połączenia w obrębie print rozmowy (print(kable(t2[[i]]...) kable, i to z powodzeniem drukuje wyjście do dokumentu, ale format jest ten sam format jak standardowy wierszu R (poprzedzonego ##, na przykład) , co jest raczej brzydkie.

Jak wyświetlić tabele, inne niż ręcznie?

### EDIT ###

Niektóre Główni odpowiadający zostały przekierowane mi R knitr print in a loop jako duplikatu odpowiedź. To nie jest, ponieważ, jak stwierdzono w poprzednim akapicie, to skutecznie drukuje tabelę, , ale format nie jest oczekiwany. Przyjęta odpowiedź (i związana z nią wątek github) naprawdę rozwiązała problem.

+0

Inne niż można opisać w swoim drugim do ostatniego akapitu, po wywołaniu 'print' Zrób sztuczkę. Przypuszczam, że zapomniałeś ustawić 'result =" asis "', kiedy próbowałeś tego. –

+0

Możliwy duplikat [R knitr print in a loop] (http://stackoverflow.com/questions/28313600/r-knitr-print-in-a-loop) –

Odpowiedz

5

To pytanie skierowane jest tutaj: https://github.com/yihui/knitr/issues/886

Wszystko czego potrzebujesz to linia przerwy po każdej rozmowie druku

--- 
title: "project title" 
author: "Mr. Author" 
date: "2016-08-30" 
output: 
    pdf_document: 
    latex_engine: xelatex 
    bibliography: biblio.bib 
    header-includes: 
     - \usepackage{tcolorbox} 
--- 

Text and chunks that run ok. 

```{r loadLibraries} 
require(data.table) 
require(knitr) 
``` 

```{r results = "asis"} 
t1 <- data.table(a = sample(letters, 10, T), b = sample(LETTERS[1:3], 10, T)) 
t2 <- split(t1, t1$b) 

for (i in 1:length(t2)){ 
    print(kable(t2[[i]], col.names = c("A", "B"))) 
    cat("\n") 
} 
``` 
+1

Nie wiem o sytuacji w 2014 r., Ale obecnie 'cat' nie jest wymagany. Jest to po prostu instrukcja "print", której brakuje w kodzie z pytaniem. –

Powiązane problemy