--- title: "Integration with the arules package" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Integration with the arules package} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 7, fig.height = 5, warning = FALSE ) ``` # Introduction One of the goals in the design of this package is to be able to integrate with the `arules` package. This means that any one using the `arules` functionalities can export to and import from `fcaR` objects, more precisely, `FormalContext` and `ImplicationSet` objects. ```{r setup} library(arules) library(fcaR) ``` # Datasets For these examples, we are using two binary datasets, `Mushroom` (from the `arules` package) and `planets` (from `fcaR`). ```{r} data("Mushroom", package = "arules") ``` At the moment, in `arules` there is no support for fuzzy sets, so we must restrict ourselves to the binary case. Let us create a `FormalContext` object for the `planets` dataset: ```{r} fc_planets <- FormalContext$new(planets) ``` # Converting between formal contexts and transactions objects We begin by converting between the objects which store the datasets. ## Importing a transactions object It suffices to initialize a `FormalContext` object with the transactions dataset: ```{r} fc <- FormalContext$new(Mushroom) fc ``` From this point, we can use all the functionalities in the `fcaR` package regarding formal contexts, concept lattices and implication sets. ## Exporting a FormalContext The `to_transactions()` function enables us to export a formal context to a format compatible with the `arules` package: ```{r} fc_planets$to_transactions() ``` and use the functionality in that package. # Converting between implication sets and rules objects Other point of integration between the two packages is the ability to import rules from the `arules` package, operate on them to compute closures, recommendations or to remove redundancies, or to export an implication set as a `rules` object. ## Importing rules as an implication set Let us suppose that we have extracted implications from the `Mushroom` dataset using the `apriori()` function: ```{r} mushroom_rules <- apriori(Mushroom, parameter = list(conf = 1), control = list(verbose = FALSE)) ``` Once we have created the `fc` object storing the `Mushroom` dataset, we simply add the implications to it as: ```{r} fc$implications$add(mushroom_rules) ``` And we can use all the functionalities for the `ImplicationSet` class. ## Exporting ImplicationSets to rules format If we want to export the implications extracted for a binary formal context, we can use: ```{r} fc_planets$find_implications() fc_planets$implications$to_arules(quality = TRUE) ``` # Final considerations An example of use may be to extract rules in the `arules` package by using `apriori()` or `eclat()`, then importing everything into `fcaR` as described above, and use the functionalities to simplify, remove redundancies, compute closures, etc., as needed, and then re-export back to `arules`.