2017-06-25 63 views
0

我錯過了這是非常簡單的東西,所以希望應該是一個簡單的修復。在Rmarkdown html報告中嵌入一個標準數字列表

我在一個Rmarkdown代碼塊中生成plotly熱圖的列表,然後希望將它們嵌入到下一步的報告中,並進行循環。

我想:

--- 
title: "test" 
output: html_document 
--- 

```{r setup, include=FALSE,echo=FALSE} 
knitr::opts_chunk$set(echo=FALSE,out.width='1000px',dpi=200,fig.keep="all") 
options(width = 1000) 
options(knitr.table.format = "html") 

suppressPackageStartupMessages(library(dplyr)) 
suppressPackageStartupMessages(library(plotly)) 
suppressPackageStartupMessages(library(knitr)) 
``` 


```{r heatmaps, include=FALSE,echo=FALSE} 
set.seed(1) 
heatmaps.list <- vector(mode="list",3) 
for (i in 1:3) heatmaps.list[[i]] <- plot_ly(z = matrix(rnorm(10000),100,100), type = "heatmap") 
``` 

```{r plots, include=FALSE,echo=FALSE} 
for (i in 1:3){ 
    heatmaps.list[[i]] 
    cat("\n") 
} 
``` 

不幸的是,儘管他們在heatmapsRmarkdown代碼塊產生這種不嵌入熱圖。

如果我嘗試這與base情節似乎工作:

```{r heatmaps, include=FALSE,echo=FALSE} 
set.seed(1) 
hist.list <- vector(mode="list",3) 
for (i in 1:3){ 
    hist.list[[i]] <- hist(rnorm(10000),plot=F) 
} 
``` 

```{r plot, warning=FALSE,message=FALSE,echo=FALSE} 
for (i in 1:3){ 
    plot(hist.list[[i]]) 
    cat("\n") 
} 
``` 

回答

1

我得到同樣的錯誤,即使一個簡單的設置

--- 
output: html_document 
--- 

```{r setup} 
suppressPackageStartupMessages(library(plotly)) 

# this works 
plot_ly(z = matrix(rnorm(100), 10, 10), type = "heatmap") 

# this does not 
set.seed(1) 
for (i in 1:3) 
    plot_ly(z = matrix(rnorm(100), 10, 10), type = "heatmap") 
``` 

要保存該地塊AB事實objets不是問題,它是循環。 here的回答是使用

htmltools::tagList(as_widget(plot1), as_widget(plot2)) 

代替。對於我最小的例子,這將是。

--- 
output: html_document 
--- 

```{r setup} 
suppressPackageStartupMessages(library(plotly)) 

# now it works 
set.seed(1) 
l <- htmltools::tagList() 
for (i in 1:3) 
    l[[i]] = as_widget(plot_ly(z = matrix(rnorm(100), 10, 10), type = "heatmap")) 
l 
``` 

不幸的是,我沒有代表重複標記的代表。