library(RGraphSpace)
library(igraph)
# Create a directed star graph with numeric attributes
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)
#--- gs_subset_nodes examples ---
# By node name (character vector)
gs2 <- gs_subset_nodes(gs, c("n1", "n2", "n3"))
# By integer position
gs2 <- gs_subset_nodes(gs, 1:5)
# By predicate (data masking against @nodes columns)
gs2 <- gs_subset_nodes(gs, nodeSize > 5)
# By pre-evaluated logical vector
keep <- gs$nodeSize > 5
gs2 <- gs_subset_nodes(gs, keep)
# Combining with pipes
gs2 <- gs |>
gs_subset_nodes(nodeSize > 5) |>
gs_subset_edges(weight > 0.3)
#--- gs_subset_edges examples ---
# By predicate on an edge attribute
gs3 <- gs_subset_edges(gs, weight > 0.5)
# By endpoint names: name1 and name2 are columns in @edges and
# can be used directly inside any predicate expression
gs3 <- gs_subset_edges(gs, name1 == "n1")
gs3 <- gs_subset_edges(gs, name2 == "n1")
# Combining endpoint and attribute conditions
gs3 <- gs_subset_edges(gs, name1 == "n1" & weight > 0.5)
# By integer position
gs3 <- gs_subset_edges(gs, 1:3)
# By logical vector
gs3 <- gs_subset_edges(gs, gs_edges(gs)$weight > 0.5)
Run the code above in your browser using DataLab