Detects communities/clusters in networks using various algorithms. Provides a unified interface to igraph's community detection functions with full parameter exposure.
communities(
x,
method = c("louvain", "leiden", "fast_greedy", "walktrap", "infomap",
"label_propagation", "edge_betweenness", "leading_eigenvector", "spinglass",
"optimal", "fluid"),
weights = NULL,
resolution = 1,
directed = NULL,
seed = NULL,
...
)A cograph_communities object (extends igraph's communities class)
with components:
Integer vector of community assignments
Modularity score of the partition
Name of the algorithm used
Node names if available
Number of nodes
Network input: matrix, igraph, network, cograph_network, or tna object
Community detection algorithm. One of:
"louvain" - Louvain modularity optimization (default, fast)
"leiden" - Leiden algorithm (improved Louvain)
"fast_greedy" - Fast greedy modularity optimization
"walktrap" - Random walk-based detection
"infomap" - Information theoretic approach
"label_propagation" - Label propagation (very fast)
"edge_betweenness" - Girvan-Newman algorithm
"leading_eigenvector" - Leading eigenvector method
"spinglass" - Spinglass simulation
"optimal" - Exact modularity optimization (slow)
"fluid" - Fluid communities algorithm
Edge weights. If NULL, uses edge weights from the network if available, otherwise unweighted. Set to NA for explicitly unweighted.
Resolution parameter for modularity-based methods (louvain, leiden). Higher values yield more communities. Default 1.
Logical; whether to treat the network as directed. Default NULL (auto-detect).
Random seed for reproducibility. Only applies to stochastic algorithms (louvain, leiden, infomap, label_propagation, spinglass).
Additional parameters passed to the specific algorithm. See individual functions for details.
Algorithm Selection Guide:
| Algorithm | Best For | Time Complexity |
| louvain | Large networks, general use | O(n log n) |
| leiden | Large networks, better quality than louvain | O(n log n) |
| fast_greedy | Medium networks | O(n² log n) |
| walktrap | Networks with clear community structure | O(n² log n) |
| infomap | Directed networks, flow-based | O(E) |
| label_propagation | Very large networks, speed critical | O(E) |
| edge_betweenness | Small networks, hierarchical | O(E² n) |
| leading_eigenvector | Networks with dominant structure | O(n²) |
| spinglass | Small networks, allows negative weights | O(n³) |
| optimal | Tiny networks only (<50 nodes) | NP-hard |
| fluid | When k is known | O(E k) |
community_louvain, community_leiden,
community_fast_greedy, community_walktrap,
community_infomap, community_label_propagation,
community_edge_betweenness, community_leading_eigenvector,
community_spinglass, community_optimal,
community_fluid
# Create a network with community structure
if (requireNamespace("igraph", quietly = TRUE)) {
g <- igraph::make_graph("Zachary")
# Default (Louvain)
comm <- cograph::communities(g)
print(comm)
# Walktrap
comm2 <- cograph::communities(g, method = "walktrap")
print(comm2)
}
Run the code above in your browser using DataLab