2015-07-18 3 views
5

У меня есть набор таблиц, которые я генерации с использованием кода, аналогичной приведенной ниже фрагменте кода:Создание потворствовать таблицы в цикле в RMarkdown в 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]]))) 
} 
``` 

Когда я запускаю код он производит желаемый результат (естественно, при условии, например, имеет мало смысл, в моих правильных данных я расплавить данные разумным образом):

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

при попытке связать код в Rstudio таблицы потворствовать не появляется:

absent tables

Естественно, что без цикла команда pander работает очень хорошо и генерирует таблицы, которые аккуратно вписаны в HTML-документ.

+2

В двух словах отключите параметр 'knitr.auto.asis' в' panderOptions' и используйте параметр 'results = 'asis'' chunk в 'knitr'. Я также дам более подробный ответ в ближайшее время, до тех пор, см. Эту связанную тему: https://github.com/Rapporter/pander/issues/142#issuecomment-66619769 – daroczig

+0

@daroczig, спасибо большое за проявление интереса. Раньше я предлагал сочетание, и он работал как рекламируемый. В более общем случае будет ли 'panderOptions ('knitr.auto.asis', FALSE) влиять на то, как обрабатываются другие области таблиц pander в файле Rmd? В дополнение к описанному выше циклу я использую pander здесь и там, чтобы получить еще несколько стандартных таблиц. – Konrad

ответ

1

В цикле for нет «экрана вывода», если вы не используете функцию print(x).

for (i in 1:4) { i } не отображает что-нибудь

for (i in 1:4) {print(i)} дисплеи Числа 1 2 3 и 4

Решение: В цикл построить таблицу (используя Knitt) и назначить его в переменную. Затем распечатайте эту переменную с помощью функции print(). Запомнить. Вы должны добавить пустые строки после и перед таблицей var: используйте функцию вставки внутри print()

+0

В частности, для pandoc вам нужно использовать 'cat' вместо' print'. –

Смежные вопросы