2016-09-30 79 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