"Buy Me A Coffee"

ColPrac: Contributor's Guide on Collaborative Practices for Community Packages


Author: Mariah A. Knowles (@snotskie)

A port of rENA version into native Julia, with substantial API changes to fit Julia style, and with addition of new rotation methods.

Original R package by http://www.epistemicnetwork.org/.

This package is in BETA – It is stable enough for exploratory work and ready for user feedback

If you use this Julia implementation of ENA in your research, please cite it, the Julia language, and the R version it is based on, as shown below; describe it as "...a port of ENA from the original R to Julia (Bezanson et al, 2017; Knowles, 2023; Marquart et al 2019)"; and justify your choice of Julia over R. For example, your research team may be more familiar with Julia, you may need interoperability with other existing Julia libraries, or you may need access to dimension reductions ("rotations") not defined in rENA.

Bezanson, J., Edelman, A., Karpinski S., & Shah V. B. (2017). Julia: A Fresh Approach to Numerical Computing. SIAM Review, 59: 65-98.

Knowles, M. A. (2023). EpistemicNetworkAnalysis.jl (Version 0.7.0) [Software] Available from https://github.com/snotskie/EpistemicNetworkAnalysis.jl

Marquart, C. L., Swiecki, Z., Collier, W., Eagan, B., Woodward, R., & Shaffer, D. W. (2019). rENA: Epistemic Network Analysis (Version [Software] Available from https://cran.r-project.org/web/packages/rENA/index.html

You may copy the recommended citation in the format of your choice from https://zenodo.org/doi/10.5281/zenodo.8401214

Getting Started

I recommend installing Julia for Visual Code first. If you are in a country where downloading resources from GitHub is difficult, you may install Julia using the Python jill package and following the advice linked in the Julia forums for users in China

Then to install this package, run the following in Julia:

using Pkg
using EpistemicNetworkAnalysis

Once you've done that, test that everything works by running the following:

using EpistemicNetworkAnalysis

data = loadExample("shakespeare")
codes = [:Love, :Death, :Honor, :Men, :Women]
conversations = [:Play, :Act, :Scene]
units = [:Play, :Speaker]
rotation = MeansRotation(:Play, "Romeo and Juliet", "Hamlet")

model = ENAModel(
    data, codes, conversations, units,


If you run into any issues, don't hesitate to file an issue or ask for help.

Then once you're ready, continue to learn more about available models.