如何解决提取节点集合的邻居名称作为列表
我想提取igraph中选定节点的邻居名称作为列表。
这是我到目前为止所拥有的:
library(igraph)
set.seed(100)
g<-erdos.renyi.game(26,0.4)
V(g)$name<-letters
x<-neighborhood(g,order = 1,V(g)$name %in% c('a','d','z'))
在上面的示例中,我想提取节点a,d,and z
的邻居的名称。这是我得到的输出:
[[1]]
+ 9/26 vertices,named,from 6ba7060:
[1] a c h i l q w x z
[[2]]
+ 11/26 vertices,from 6ba7060:
[1] d b c e g h i k l w y
[[3]]
+ 9/26 vertices,from 6ba7060:
[1] z a c g h l o u v
我想列出一长串带有表示形式的名称。输出应如下所示:
[1] "a" "c" "h" "i" "l" "q" "w" "x" "z" "d" "b" "c" "e" "g" "h" "i" "k" "l" "w" "y" "z" "a" "c"
[24] "g" "h" "l" "o" "u" "v
到目前为止,我已经使用unlist
库尝试了x %>% map(2) %>% flatten()
和purrr
的各种版本,但无济于事。
我也不反对以data.frame
或tibble
的形式获得输出,其中一列中包含名称,而另一列中出现的次数。
解决方法
您可以将names()
应用于列表中的每个元素以获取顶点名称作为字符值,然后可以unlist
将这些列表合并为单个字符向量
unlist(lapply(x,names))
,
也许您可以尝试names(unlist(x))
,例如
> names(unlist(x))
[1] "a" "c" "h" "i" "l" "q" "w" "x" "z" "d" "b" "c" "e" "g" "h" "i" "k" "l" "w"
[20] "y" "z" "a" "c" "g" "h" "l" "o" "u" "v"
,
如果您希望包含计数的数据框,则可以执行以下操作:
stack(table(unlist(lapply(x,names))))[2:1]
#> ind values
#> 1 a 2
#> 2 b 1
#> 3 c 3
#> 4 d 1
#> 5 e 1
#> 6 g 2
#> 7 h 3
#> 8 i 2
#> 9 k 1
#> 10 l 3
#> 11 o 1
#> 12 q 1
#> 13 u 1
#> 14 v 1
#> 15 w 2
#> 16 x 1
#> 17 y 1
#> 18 z 2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。