使用特征向量中心性(R中的igraph)

时间:2017-11-05 11:55:01

标签: r igraph social-networking sna

我正在使用版本0.99.879和版本1.0.1。

我的问题与Show only specific labels on network graph using igraph in R非常相似。我在此发布了我的后续问题作为评论,但被要求提出一个新问题。

我还想只显示特定的顶点标签,如果您使用中心功能,这样可以正常工作。但是,我尝试使用重要性,并显示以下错误

  

ifelse错误(evcent(g)> 0.1,V(g)$ name,NA):( list)对象   不能被强制输入'double'


以下是代码:

#random graph
library(igraph)

g <- graph( c("John", "Jim", "Jim", "Jack", "Jim", "Jack", "Brian", "John", "John", "Janis", "Janis", "Jennifer", "Justin", "John"), 
                   isolates=c("Jesse", "Brian") )
# works perfectly fine
par(mfrow=c(1,2), mar=c(0,0,1,0))
plot(g, vertex.size=9,
     vertex.label = ifelse(betweenness(g) > 0, V(g)$name, NA),
     edge.arrow.size=.5)
plot(g, vertex.size=9,
     vertex.label = ifelse(degree(g) > 0, V(g)$name, NA),
     edge.arrow.size=.5)
#does not work
plot(g, vertex.size=9,
     vertex.label = ifelse(evcent(g) > 0.01, V(g)$name, NA),
     edge.arrow.size=.5)
# I also tried this with no success
eig <- evcent(g)
par(mfrow=c(1,1), mar=c(0,0,1,0))
plot(g, vertex.size=9,
     vertex.label = ifelse(eig$vector > 0.1, V(g)$name, NA),
     edge.arrow.size=.5)


如何解决这个问题。这究竟是什么意思:

  

'输入double'

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

查看帮助页?evcent。它说:

  

价值

     

包含组件的命名列表:...

您需要使用

ifelse(evcent(g)$vector > 0.01,

同样地,使用hub_cent$vector