如何使用带有 R 的 for 循环在 r markdown 编译器中生成用于先验规则可视化的图形 html 小部件?

How to generate a graph html widget for apriori rules visulization within rmarkdown compiler with a for loop with R?

我一直在尝试在 rmarkdown html 编译器中生成一系列图表...

```{r, include=T, echo=F, fig.height=4, fig.width=10,warning=FALSE}

这里直接是列出文件的目录

"files" 是 read.transaction 函数参数

所需的交易表单中的文件对象列表
direct <- "......"
files <- list.files(path = ".....")
 for (i in 1:length(files)) {

    tr<-read.transactions(file = paste(as.character(direct),"/",files[i],sep = ""),format = "basket",sep = ",")

    rules <- apriori(tr, parameter = list(supp=sup, conf=confid))
    rules <- sort(rules, by='count', decreasing = TRUE)

    plotr <- plot(rules, method = "graph",  engine = "htmlwidget")


  }


```

我试过 print(plotr),只打印 plot(rules,...),但似乎没有任何效果。

问题是当我编写 markdown 时,.Rmd 文件生成的 html 中没有弹出不同交易文件的图表。考虑到这个循环在块内运行的函数内。

如果有人能帮我解决这个问题就好了。如果它有价值,我正在尝试生成一份报告,其中 returns 基于应用于不同文件的先验算法的不同绘图规则。

如果有人知道如何解决这个问题,那将是一个很大的帮助,谢谢。

要将多个 htmlWidget 放入一个 RMarkdown 块中,您需要创建一个标签列表。这是一个例子:

---
title: "Example RMarkdown with multiple arulesViz htmlWidgets in one chunk"
output: html_document
---


```{r}
library(arulesViz)

data(Groceries)
rules <- apriori(Groceries, parameter=list(support=0.001, confidence=0.8))

widget_list <- lapply(1:10, FUN = function(i) 
    plot(sample(rules, size = 10), method = "graph", engine = "htmlwidget"))

htmltools::tagList(widget_list)  
``` 

您还可以使用常规循环来填充列表。有关此问题的更多信息,请访问 https://github.com/rstudio/DT/issues/67

要在生成的文档中隐藏来自 libraryapriori 的消息,您可以这样做:

---
title: "Example RMarkdown with multiple arulesViz htmlWidgets in one chunk"
output: html_document
---


<!-- Hide the messages for library -->
```{r, echo = FALSE, results = FALSE, warning = FALSE, message = FALSE}
library(arulesViz)
```

<!-- verbose = FALSE hides the progress report for apriori -->
```{r}
library(arulesViz)
data(Groceries)
rules <- apriori(Groceries, parameter=list(support=0.001, confidence=0.8), 
  control = list(verbose = FALSE))

widget_list <- lapply(1:10, FUN = function(i) 
    plot(sample(rules, size = 10), method = "graph", engine = "htmlwidget"))

htmltools::tagList(widget_list)  
```