knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
In version 1.4.1, fcaR introduces comprehensive support for JSON (JavaScript Object Notation) export and import. This facilitates interoperability with other systems, web applications, and non-R based tools.
This vignette demonstrates how to export and import the main data structures in fcaR: FormalContext, ConceptLattice, ImplicationSet, and RuleSet.
First, ensure you have the jsonlite package installed, as it is required for these features.
library(fcaR) # install.packages("jsonlite")
We can export a FormalContext to JSON, which preserves the objects, attributes, and the incidence matrix. Importantly, the incidence matrix is exported in a sparse format (indices and values) to handle large datasets efficiently.
Let's load a sample dataset and create a FormalContext.
data("planets") fc <- FormalContext$new(planets) print(fc)
To export the context to a JSON string:
json_str <- fc$to_json() cat(substr(json_str, 1, 200), "...") # Print first 200 chars
You can also save it directly to a file:
fc$to_json(file = "context.json")
To verify the export, we can import the JSON string back into a new FormalContext object using context_from_json():
fc2 <- context_from_json(json_str) print(fc2)
We can check that the original and reconstructed contexts are identical:
all(fc$objects == fc2$objects) all(fc$attributes == fc2$attributes) all(as.matrix(fc$I) == as.matrix(fc2$I))
The to_json() method for FormalContext is recursive. If you have computed concepts or implications, they will be nested within the exported JSON.
fc$find_concepts() fc$find_implications() # Export with nested concepts and implications json_full <- fc$to_json() # Import back fc_full <- context_from_json(json_full) # Check if concepts are present fc_full$concepts$size()
You can also export a ConceptLattice independently.
cl <- fc$concepts json_lattice <- cl$to_json()
And import it using lattice_from_json():
cl2 <- lattice_from_json(json_lattice) print(cl2)
The exported JSON includes the lattice hierarchy (superconcept/subconcept relations), allowing for full reconstruction of the lattice structure.
Similarly, sets of implications can be exported and imported.
imps <- fc$implications json_imps <- imps$to_json()
Import using implications_from_json():
imps2 <- implications_from_json(json_imps) print(imps2)
Association rules (including causal rules) are also supported.
# Assuming we have a RuleSet, e.g. from arules or created manually # Here we'll just demonstrate the syntax rs <- RuleSet$new(attributes = fc$attributes) # ... populate rules ... # json_rules <- rs$to_json() # rs2 <- rules_from_json(json_rules)
The new JSON functionality ensures that you can easily move your FCA models out of R for visualization, storage, or integration with web services.
| Class | Export Method | Import Function |
|-------|---------------|-----------------|
| FormalContext | $to_json() | context_from_json() |
| ConceptLattice | $to_json() | lattice_from_json() |
| ImplicationSet | $to_json() | implications_from_json() |
| RuleSet | $to_json() | rules_from_json() |
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.