Как сгенерировать виджет графа html для визуализации априорных правил в компиляторе rmarkdown с l для 100 * с R? - PullRequest
0 голосов
/ 08 февраля 2020

Я пытался сгенерировать последовательность графиков внутри компилятора 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")


  }


```

Я пробовал печатать (plotr), печатать только сюжет (правила, ...) и ничего похоже, работает.

Проблема в том, что когда я связываю уценку, график различных файлов транзакций не появляется в html, генерируемом файлом .Rmd. Учтите, что этот l oop находится внутри функции, которая выполняется внутри блока.

Было бы неплохо, если бы кто-то мог помочь мне попытаться решить эту проблему. Если что-то стоит, я пытаюсь создать отчет, который возвращает различные правила построения на основе алгоритма apriori, примененного к различным файлам.

Если кто-нибудь знает, как это можно решить, было бы очень полезно, спасибо.

1 Ответ

0 голосов
/ 08 февраля 2020

Чтобы поместить несколько htmlWidgets в один блок 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)  
``` 

Вы также можете использовать обычный l oop для заполнения списка. Дополнительную информацию по этой проблеме можно найти по адресу https://github.com/rstudio/DT/issues/67

Чтобы скрыть сообщения от library и apriori в полученном документе, вы можете сделать это:

---
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)  
``` 
...