How to subgraph a network based on sex?

I have been trying to subgraph a population-wide network into 2 smaller subgraphs each consisting of only males and females in order to visualize sex-linked sociality and other various network measurements across the sexes.

However, I cannot seem to get the subgraph function to work properly on my data
My node attributes are stored as “Sex” inside the network as an either “M” or “F”

I have used an older textbook that stated I should run:

Female_network <- get.inducedSubgraph(myNetwork, 
                         which (myNetwork %>% "Sex" == F))

and I understand get.inducedSubgraph has depreciated.

I have also tried

Female_network <- subgraph(myNetwork, My_network$Sex[["F"]]

which also has been deprecated in favor of igraph_induced_subgraph. However, when that function is run it can also not be found.

I’m sure I’m missing a very basic command to do this but I can’t seem to get anything to work. Any help would be greatly appreciated

The function you are looking for is simply called induced_subgraph() in R. The error message that you see when calling subgraph() is a bit misleading; it comes from the C core of igraph, and in the C core the function is called igraph_induced_subgraph(). So, a full example:


# Let's create an example graph first
g <-, 0.2)

# Assign gender randomly
V(g)$gender <- sample(c("M", "F"), vcount(g), replace=T)

# Now take the female subgraph
sg <- induced_subgraph(g, V(g)$gender == "F")

# and print the gender attribute for confirmation
> V(sg)$gender
 [1] "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F"
[20] "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F"
[39] "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F" "F"