library(RGraphSpace)
library(igraph)
g <- make_star(10, mode = "out")
V(g)$nodeSize <- runif(vcount(g), 1, 10)
E(g)$weight <- runif(ecount(g), 0, 1)
gs <- GraphSpace(g)
gs <- normalizeGraphSpace(gs)
#--- [ examples ---
# Node-induced subgraph: keep named nodes, prune dangling edges
gs[c("n1", "n2", "n3"), ]
# Node-induced subgraph by integer position
gs[1:4, ]
# Node-induced subgraph by pre-evaluated logical mask
gs[gs$nodeSize > 5, ]
# Edge selection only: keep all nodes
gs[, 1:3]
gs[, gs_edges(gs)$weight > 0.5]
# Edge selection by endpoint: 'name1' and 'name2' must be pre-evaluated
# when using [, because [ evaluates j in the calling environment.
# Use gs_subset_edges() for unquoted predicate expressions instead.
gs[, gs_edges(gs)$name1 == "n1"]
gs[, gs_edges(gs)$name1 == "n1" & gs_edges(gs)$name2 == "n2"]
gs[, quote(name1 == "n1" & name2 == "n2")]
# Combined: node filter first, then edge intersection
gs[c("n1", "n2", "n3"), gs_edges(gs)$weight > 0.5]
gs[c("n1", "n2", "n3"), gs_edges(gs)$name1 == "n1"]
#--- [[ examples ---
gs[["nodes"]] # same as getGraphSpace(gs, "nodes")
gs[["edges"]] # same as getGraphSpace(gs, "edges")
gs[["graph"]] # same as getGraphSpace(gs, "graph")
gs[["fdata"]] # same as getGraphSpace(gs, "fdata")
Run the code above in your browser using DataLab