2016-09-30 25 views
2

內我有生成對圖和表的A R減價/ knittr文檔。對的數量是可變的,所以我在一個循環內創建它們。 我想結果在輸出交錯:表1,地塊1,表2,地塊2 ...交織表和圖中的R降價,環

在下面的例子中,所有表都首先在文件的頂部。我曾嘗試

  • 奉迎或kable的各種排列爲我的表函數
  • 包裹表函數在打印或有或無結果=「ASIS」
留裸
  • 編輯:我找到了一個解決方案,並張貼在下面。現在我正在尋找一種與我在custom R Markdown plot size within loop中收到的巨大變高建議兼容的產品?

    ```{r cars, echo=FALSE} 
    library(ggplot2) 
    library(knitr) 
    
    carb.possibilities <- sort(unique(as.character(mtcars$carb))) 
    
    filtereds <- lapply(carb.possibilities, function(carb.ct) { 
        return(mtcars[ mtcars$carb == carb.ct , ]) 
    }) 
    
    carb.possibilities <- paste(carb.possibilities, ' Carburetors', sep = '') 
    
    names(filtereds) <- carb.possibilities 
    
    lapply(carb.possibilities, function(one.possibility) { 
    
        current.possibility <- filtereds[[one.possibility]] 
    
        print(kable(current.possibility)) 
    
        ggplot(current.possibility, aes(factor(gear), mpg)) + 
        coord_flip() + 
        labs(x = "Gears", title = one.possibility) + 
        geom_point(position=position_jitter(width = 0.1, height = 0.1)) 
    }) 
    ``` 
    
  • +1

    我會用'的(在carb.possibilities one.possibility){',而不是lapply,和n'print(ggplot(...))' – user20650

    +0

    太好了,只要表格被打印出來,就可以交換表格和圖表。不幸的是,這意味着這些表格會失去他們的好的格式。 PS,爲什麼你更喜歡for循環而不是lappy? –

    +0

    此外,我沒有看到我在鏈接的答案中如何將其與外部環路'do.call(grid.arrange ...)一起使用。 –

    回答

    1

    使用ASIS,包裝既表和打印圖()和cat'ing一個換行符解決交織問題。我還沒有想出如何將此與可變高度地塊從custom R Markdown plot size within loop

    結合見https://github.com/yihui/knitr/issues/886

    ```{r cars, echo=FALSE, results='asis'} 
    library(ggplot2) 
    library(knitr) 
    
    carb.possibilities <- sort(unique(as.character(mtcars$carb))) 
    
    filtereds <- lapply(carb.possibilities, function(carb.ct) { 
        return(mtcars[ mtcars$carb == carb.ct , ]) 
    }) 
    
    carb.possibilities <- paste(carb.possibilities, ' Carburetors', sep = '') 
    
    names(filtereds) <- carb.possibilities 
    
    for(one.possibility in carb.possibilities){ 
    
        current.possibility <- filtereds[[one.possibility]] 
    
        my.ggplot <- ggplot(current.possibility, aes(factor(gear), mpg)) + 
        coord_flip() + 
        labs(x = "Gears", title = one.possibility) + 
        geom_point(position=position_jitter(width = 0.1, height = 0.1)) 
    
        print(kable(current.possibility)) 
    
        cat('\n') 
    
        print(my.ggplot) 
    
    } 
    ``` 
    
    +0

    改變高度的一種方式是具有限定的高度的較早數據塊(即'高度< - 集合體(齒輪〜碳水化合物,mtcars,功能(x)的長度(唯一的(X)))$齒輪;高度< - paste0(2米*高度, '在')'),然後通過這在下一組塊中的'out.height'參數與圖(即'out.height = heights')。但是,我不知道如何獲得一致的繪圖寬度。 (雖然如果寬度是恆定的,那麼這些地塊看起來會拉長) – user20650