Отображение только определенных меток с использованием центральности собственного вектора (график в R)

Я использую rstudio версии 0.99.879 и igraph версии 1.0.1.

Мой вопрос очень похож на Показывать только определенные метки на сетевом графе с помощью igraph в R. Я разместил свой дополнительный вопрос по этому поводу в качестве комментария, но меня попросили открыть новый вопрос.

Я также хочу отображать только определенные метки вершин, и это отлично работает, если вы используете тег степень или промежуточность функция центральности . Однако я попробовал это с помощью eigenvector или hub, и отобразится следующая ошибка

Ошибка в 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)


Как это исправить. Что именно это означает:

'тип двойной'

Заранее благодарю за любую помощь!


person Stefan_W    schedule 05.11.2017    source источник


Ответы (1)


Взгляните на страницу справки ?evcent. Он говорит:

Ценность

Именованный список с компонентами: ...

Вам нужно использовать

ifelse(evcent(g)$vector > 0.01,

и аналогично используйте hub_cent$vector

person G5W    schedule 05.11.2017
comment
Спасибо за этот ответ, но мне интересно, не совсем ли ifelse(evcent(g)$vector > 0.4, V(g)$name, NA), поскольку меня интересует оценка собственных векторов узлов? - person Stefan_W; 05.11.2017
comment
Ты прав. Он должен быть векторным, а не значением. Я изменю ответ, чтобы не сбивать с толку окружающих. - person G5W; 05.11.2017