Skip to content

netify

1.5.4Package record

Tools for Network Data Workflows

1packages depend
1.5Kdownloads / year
70.5%test coverage
13/13flavors OK

Overview

About

Builds, validates, analyzes, and visualizes network data from dyadic, event, matrix, 'igraph', and 'network' inputs. Supports cross-sectional, longitudinal, bipartite, and multi-layer networks, with conversion helpers for common modeling workflows and plotting utilities for exploratory analysis. Network methods are described in Wasserman and Faust (1994, ISBN:9780521387071), Cranmer et al. (2021) doi:10.1017/9781316662915, and Minhas et al. (2022) doi:10.1017/psrm.2021.56.

Changes in 1.5.4

Behavior changes

These fixes change numbers that earlier versions reported.

  • summary() density excludes dyads with missing values from the denominator, matching sna::gden(). Networks without missing dyads are unaffected.
  • Matrix, array, and list inputs whose diagonal is entirely zero are now read as having no self-loops (diag_to_NA = TRUE), matching the igraph import path. Pass diag_to_NA = FALSE to keep self-loop cells in density and summary_actor() prop_ties.
  • to_netify() sets the diagonal of imported statnet network objects that do not allow loops to NA, matching the igraph import. Density for these networks now agrees with sna::gden(), and netify to statnet to netify round trips keep their density.
Show all changes in 1.5.4Hide the rest of the changes in 1.5.4
  • netify(..., output_format = "longit_array") respects actor_pds and actor_time_uniform = FALSE. Actors outside their active periods are NA in those periods.
  • Supplying actor_pds with gapped numeric time no longer creates empty periods for every integer in the range.
  • The stored actor_pds (and get_actor_time_info(net)) uses time labels in the class of the time variable rather than integer positions.
  • mixing_matrix() counts each undirected tie once, so total_ties is halved for symmetric networks and raw between-group cells hold half a tie in each mirrored cell. Proportions, assortativity, and modularity are unchanged.
  • compare_networks() counts each undirected edge once in edge_changes. For networks with different actors, correlation, Jaccard, Hamming, QAP, and spectral distance are computed on the shared actors, with a message saying how many actors were left out.
  • bootstrap_netlet() resamples longitudinal netlets by actor name, so the same actors are drawn in every period. Pairs formed by two copies of the same actor are NA rather than 0, removing a downward bias in density.
  • subset(from =, to =) on unipartite networks returns a square matrix over the union of the selected actors, with ties outside the from x to block set to NA.

New warnings and messages

  • netify() warns when symmetric = TRUE and a dyad appears in both directions within a period with different weights. The value from the last row is still used; use sum_dyads = TRUE, aggregate_dyad(..., symmetric = TRUE), or symmetric = FALSE to resolve it.
  • nodal_vars is documented as describing actor1, and netify() reports actors that only appear as actor2, since they receive NA.

Bug fixes

Subsetting and transformations

  • subset() / subset_netify() on longitudinal networks clips actor period bounds to the retained periods. Subsetting to several periods without both endpoints previously made plot(x, time_filter = ...), decompose_netify(), and add_node_vars() fail with "Actor period bounds are not in the netlet time labels."
  • subset() returns requested periods in netlet order without duplicates.
  • subset() down to a single period keys dyadic data as cross-sectional, so dyad_correlation(), attribute_report(), add_dyad_vars(), mutate_weights(), and pivot_dyad_to_network() find existing dyadic variables.
  • subset() of a multilayer longitudinal array to one period returns a cross-sectional [actor, actor, layer] array.
  • subset() on a bipartite network gives a clear error when the selected actors come from only one mode.
  • ego_netify() subsets actor_pds, nodal, and dyadic attributes to the ego network's actors and periods, and keeps the period name when only one period remains.
  • mutate_weights() with only add_constant changes longitudinal arrays, updates weight attributes on every period of a longitudinal list, renames the layer of single-layer networks with new_name, and works on multilayer networks. binarize() also works on multilayer networks.

Construction and attributes

  • nodal_vars, dyad_vars, add_node_vars(), and add_dyad_vars() work with POSIXct time.

Plotting

  • plot() draws each tie once in undirected networks.
  • plot() works for bipartite networks where an actor appears in both modes (for example mexico). summary_actor() returns plain actor names for these networks with an actor_mode column.
  • plot(..., static_actor_positions = TRUE) works for longitudinal bipartite networks.
  • layout = "sugiyama" works in plot() and get_node_layout().
  • point_layout accepts a single data.frame reused across periods.
  • plot_homophily(type = "distribution") works for longitudinal networks.
  • label_size_by, label_color_by, label_fill_by, and label_alpha_by no longer trigger an "Unknown parameter" warning.
  • node_filter in longitudinal plots removes edges only in the periods where an endpoint is filtered out.
  • time_filter accepts numeric time labels such as time_filter = 2012 when they are not valid indices, and lists the available periods when nothing matches.

Analysis

  • homophily(), mixing_matrix(), attribute_report(), and dyad_correlation() work on multilayer longitudinal netlets stored as lists.
  • homophily(method = "hamming") and method = "jaccard" accept character, factor, and logical attributes.
  • dyad_correlation() aligns dyadic covariates to network actors by name.
  • compare_networks(by = ...) works for what = "structure", "nodes", and "attributes", and gives a clear error for edge comparisons.

Converters

  • netify_to_statnet() accepts factor and Date nodal attributes.
  • netify_to_amen(lame = TRUE) and to_lame(lame = TRUE) order Xrow and Xcol rows to match each period's actors.
  • The to_lame()$ame_call snippet runs with current lame, and from_lame_fit() returns a longitudinal netify for longitudinal lame::lame() fits.

Documentation

  • The animate_netify() example runs only when gganimate is installed.
  • The peek() example uses actor names that exist in icews.

From NEWS.md in the release

Install

Health

CRAN checks
13OK
Slowest check: 15.2 min · r-release-windows-x86_64
Status changes
  • OK13 OK2026-08-05
  • NOTE12 OK, 1 NOTE2026-08-01
  • OK6 OK2026-07-01
Advisories

none known

Documentation

In release 1.5.4
READMEYes · 1,105 wordsVignettesYes · 4 · dynamicNEWSYes · 100% structured · mentions 1.5.4Citation fileNoWebsiteYes · pkgdown
Help pages
129 (2 internal)
Examples that run
55%34 run in a plain check · 28 only when donttest examples are enabled (R CMD check --as-cran)
Exported functions with examples
51%
Documented parameters
100%
Return-value docs
100%
Help pages citing references
3%

Downloads

1.5K
CRAN downloads in the past year
Rank #8,591 · ~4/day · ~123/mo
Daily download trend is not available in this view yet.
41730 days
1.1K90 days
1.5K1 year
Compare downloads with other packages →
Also on59 r2u3 autocran

Repository

11Stars
1Forks
0Open issues
0Open PRs
5Releases
285Commits
3Commit identities
285 commits · Last activity 2026-10-21 · 0% stars, 30d
Responsiveness
How these are sampled
PRs merged (all time)
67%
Median days to close, 50 most recently updated closed issues
not measured
Median days to close, 50 most recently updated closed PRs
0

Stars over time

2025-08-17 · 62026-07-07 · 11
PracticesBeta

5 development-tooling and community-health practices detected across 3 families in the upstream repository

Checks run against github.com/netify-dev/netify on 2026-10-22.

Continuous integration (1)
GitHub Actions
Docs source (3)
pkgdown

GitHub Pages site last deployed 2026-10-21 · The repository has a site deploy workflow

pkgdown site last built 2026-10-21

Lint, format, editor (1)
VS Code
How this is detected·Detection ruleset v4 (2026-10-20)

Dependencies

Declared dependencies
33 external dependencies (excludes base and recommended)

Installing netify adds 26 packages (14 with compiled code, 23 MB of source tarballs). Heaviest: ggplot2 6.0 MB, igraph 4.8 MB, Rcpp 1.8 MB.

Depends (1)
R >= 3.5.0
LinkingTo (2)
Enhances (0)
none
Reverse dependencies
1direct
0indirect
Imports 1
Depends, Imports or LinkingTo, most downloaded first

Datasets

People & History

People (5)
Author, Maintainer since 1.5.3 (2026)
Contributor
Contributor
Contributor
Releases (2)

Pick two releases to compare their code metrics.

  • 1.5.4Latest
    record
    2026-10-21 · current release · diff ↗
  • 1.5.3
    record
    2026-06-30
  • R
    R 4.6.0 released · 2026-04-24

Package metadata

First published
2026-06-30
Total releases
2 / 1 yrs
License
GPL-3 OSI
Minimum R
≥ 3.5.0
Bundled data
2.8 MB / 6 files
Download size
4.2 MB

Cite

Cite this package

Run in R for the authors' preferred citation:

citation("netify")
Minhas, S., Choi, H. E., Dorff, C., Henry, C., & Salau, T. (2026). netify: Tools for Network Data Workflows (Version 1.5.4) [Computer software]. https://doi.org/10.32614/CRAN.package.netify

This package has no citation file, so citation() returns this entry built from DESCRIPTION.

Cite the R Observatory

For a number measured here: a download total, a coverage figure, an archival date.

APA

Balamuta, J. J. (2026). R Observatory: Metrics for netify version 1.5.4 [Data set]. HJJB, LLC. Data release v2026-10-25. https://doi.org/10.5281/zenodo.21843040

From data release v2026-10-25, which the citation names so these numbers can be found later. More on citing and the projects behind them.

Report a problem with this page →

Privacy choices

These apply to this browser and are stored on this device only. Nothing about your choice is sent to us.

Read the privacy policy