Прошу прощения, если этот вопрос кажется лишним, но я начинаю экспериментировать с R и его инструментами SNA для класса и провел несколько разных руководств / лабораторных работ, чтобы привыкнуть. Ресурс, который всегда рекомендуется, - это лаборатории SNA в Стэнфорде, но даже простое выполнение вводной лаборатории возвращает ряд ошибок, которые меня смущают. Полный код R с аннотациями доступен здесь:
http://sna.stanford.edu/lab.php?l=1
Первые части довольно просты, и я понимаю большую часть того, что происходит. Но как только я пытаюсь добавить атрибуты вершин к графу (строка 236 и далее), я сталкиваюсь с проблемами с только что созданным графическим объектом «krack_full». Запускаем это ...:
for (i in V(krack_full)) {
for (j in names(attributes)) {
krack_full <- set.vertex.attribute(krack_full,
j,
index = i,
attributes[i + 1, j])
}
}
... возвращает это:
Error in set.vertex.attribute(krack_full, j, index = i, attributes[i + :
unused argument (index = i)
Итак, я думаю, хорошо, используйте второй метод, который они обрисовали в общих чертах, и просто следуйте ему:
attributes = cbind(1:length(attributes[,1]), attributes)
krack_full <- graph.data.frame(d = krack_full_nonzero_edges,
+ vertices = attributes)
Кажется, что это работает нормально - за исключением того, что он буквально создает атрибут с именем "(1: length (attributes [, 1])" ...
> summary(krack_full)
IGRAPH DN-- 21 232 --
attr: name (v/c), 1:length(attributes[, 1]) (v/n), AGE (v/n), TENURE (v/n), LEVEL (v/n), DEPT
(v/n), advice_tie (e/n), friendship_tie (e/n), reports_to_tie (e/n)
Итак, все уже и так странно. И, наконец, когда я пытаюсь получить атрибуты вершины на следующем шаге, я сталкиваюсь с некоторыми ошибками, касающимися класса объекта:
> get.vertex.attribute(krack_full, 'AGE')
Error in get.vertex.attribute(krack_full, "AGE") :
get.vertex.attribute requires an argument of class network.
> get.vertex.attribute(krack_full, 'TENURE')
Error in get.vertex.attribute(krack_full, "TENURE") :
get.vertex.attribute requires an argument of class network.
> get.vertex.attribute(krack_full, 'LEVEL')
Error in get.vertex.attribute(krack_full, "LEVEL") :
get.vertex.attribute requires an argument of class network.
> get.vertex.attribute(krack_full, 'DEPT')
Error in get.vertex.attribute(krack_full, "DEPT") :
get.vertex.attribute requires an argument of class network.
... С этого момента почти ничего не работает так, как я ожидал. Поэтому я подозреваю, что объект графика "krack_full", в который были импортированы данные, почему-то не такой, каким должен быть ...?
Опять же, извините, если я совершаю полную ошибку новичка, но я был бы очень признателен, если бы вы указали мне правильное направление. Я хотел бы лучше понять, что здесь происходит.
Большое Вам спасибо.