Как перечислить все атрибуты вершины графа в R?
Я использую igraph пакет в R.
Я хотел бы связать некоторые данные с каждой вершиной, например. путем добавления атрибутов id и описания к каждому. Атрибуты определяются во время выполнения. У меня есть несколько связанных вопросов о том, как установить и получить эти данные.
Чтобы установить идентификатор вершины, я использую (где g
- график):
> set.vertex.attribute(g,'id',1,'first_id') # etc
Я ожидал, что смогу прочитать атрибуты с помощью:
> get.vertex.attribute(g,'id',1)
Но это возвращает NULL. Я что-то делаю неправильно?
Кроме того, функция с вызовом get.vertex.attribute
не имеет доступа к списку имен атрибутов. Как я могу извлечь имена атрибутов из графика g
?
Наконец, я хочу установить/получить значения атрибутов из/в именованный список. Есть ли простой способ сделать это без прокрутки каждой вершины и атрибута и применения set.
- или get.vertex.attribute
?
спасибо!
Ответы
Ответ 1
Похоже, вам нужно вернуть результаты set.vertex.attribute
на g
следующим образом:
g <- graph.data.frame(data.frame(one=1:2,two=2:3))
g <- set.vertex.attribute(g,'id',1,'first_id')
get.vertex.attribute(g,'id',1)
#[1] "first_id"
В качестве справки в ?get.vertex.attribute
говорится:
graph: объект графика для работы. Обратите внимание, что исходный граф никогда не изменен, вместо этого возвращается новый объект графа; если вы не назначаете его переменной, ваши изменения будут потерял! См. Примеры ниже.
Далее, из того же файла справки есть...
list.graph.attributes, list.vertex.attributes и list.edge.attributes вернуть вектор символов, имена атрибутов.
list.vertex.attributes(g)
#[1] "name" "id"
С быстрым взглядом, похоже, не существует простой функции для ввода/вывода атрибутов вершин в массе. Вы можете придумать что-то вроде этого:
lapply(list.vertex.attributes(g),function(x) get.vertex.attribute(g,x))
#[[1]]
#[1] "1" "2" "3"
#
#[[2]]
#[1] "first_id" NA NA
Ответ 2
Используйте следующий синтаксис для назначения атрибутов вершин на месте:
> V(g)[1]$id <- "first_id"
> V(g)[1]$id
[1] "aaa"
Этот синтаксис также позволяет вам получить или установить атрибут вершины для всех вершин; просто опустите индексирование:
> V(g)$id <- c("aa", "bb", "cc")