我在R中有一个网络图:
library(igraph)
# create the data frame
my_data <- data.frame(to = c(1,2,3,4,2,4,1,1,1,7,7), from = c(2,2,2,2,6,5,7,8,9, 10,11))
# create the igraph object
my_graph <- graph_from_data_frame(my_data, directed = FALSE)
# plot the graph
plot(my_graph)
在上一个问题(All Nodes of Degree "N" that can be reached from Some Node)中,我学习了如何找出从半径为n的特定节点可以到达的节点数:
# neighbors of degree = 3 from node = 1
q = ego(my_graph, 3, "1")
[[1]]
+ 11/11 vertices, named, from 8e85769:
[1] 1 2 7 8 9 3 4 6 10 11 5
**我的问题:**我正在尝试打印此“q”对象-但是,当我尝试打印时,出现以下错误:
Error in xy.coords(x, y, xlabel, ylabel, log) :
'x' is a list, but does not have components 'x' and 'y'
我试图解决这个问题,但意识到这很可能是因为ego()
函数只返回节点而不保留边信息。
我尝试了以下代码的变通方法:
plot(induced.subgraph(graph=my_graph,vids=as.numeric(q[[1]])))
代码似乎在工作,但我这样做正确吗?
1条答案
按热度按时间ccgok5k51#
使用
make_ego_graph
保留边和属性:make_ego_graph是用给定的序参数从给定顶点的所有邻域创建(子)图。2这个函数保留了顶点、边和图的属性。
make_ego_graph
(和ego
)返回一个图的列表,因此需要将第一个对象传递给plot
: