在rmarkdown(knitr chunk)文档中生成的多个(R)绘图图

frd*_*dbd 6 r knitr r-markdown plotly

我尝试使用循环或lapply在Rmarkdown文档中创建多个plotly数字.

R脚本:

require(plotly)
data(iris)
b <- lapply(setdiff(names(iris), c("Sepal.Length","Species")),
            function(x) {
              plot_ly(iris, 
                      x = iris[["Sepal.Length"]],
                      y = iris[[x]], 
                      mode = "markers")
            })
print(b)
Run Code Online (Sandbox Code Playgroud)

效果很好,但是当它包含在knitr块中时会失败:

---
output: html_document
---

```{r,results='asis'}
require(plotly)
data(iris)
b <- lapply(setdiff(names(iris), c("Sepal.Length","Species")),
            function(x) {
              plot_ly(iris, 
                      x = iris[["Sepal.Length"]],
                      y = iris[[x]], 
                      mode = "markers")
            })
print(b)
```
Run Code Online (Sandbox Code Playgroud)

我试着更换print(b)用的组合lapply evalparse,但只有在显示最后一个数字.

我怀疑是一个范围/环境问题,但我找不到任何解决方案.

谢谢你的帮助.

Yih*_*Xie 6

相反的print(b),把bhtmltools::tagList(),如

```{r}
library(plotly)

b <- lapply(
  setdiff(names(iris),
          c("Sepal.Length","Species")),
  function(x) {
    plot_ly(iris, 
            x = iris[["Sepal.Length"]],
            y = iris[[x]], 
            mode = "markers")
  }
)

htmltools::tagList(b)
```
Run Code Online (Sandbox Code Playgroud)

注意:在Plotly v4之前,有必要使用Plotly as.widget()函数将Plotly对象转换为htmlwidgets .从Plotly v4开始,默认情况下它们是htmlwiget对象.