Я создаю (неориентированный) график социальной сети с помощью пакета igraph
, который я практиковал с подмножеством моих данных. Для этого вершина должна быть в двух столбцах, и тогда будут показаны все ассоциации. однако иногда вершина (индивидуальная, я работаю с животными) встречается одна, без ассоциаций. так это животное будет в левом столбце, а в правом столбце ничего нет, пустая ячейка.
Однако в пакете igraph
R считает, что «NA» / ничего не является идентификатором животного, поэтому он делает из него вершину. В моем подмножестве я решил эту проблему следующим образом:
y <- data.frame(data$ID1, data$ID2)
ID1 и 2 - это коды считывателей пит-тегов для распознавания отдельных животных. это в основном их имя.
graph.data.frame(y, directed=FALSE)
Я называю этот график: net
net <- graph.data.frame(y, directed=FALSE)
net <- delete_vertices(net, "")
поэтому в коде, показанном выше, пустой значения, в которые был введен идентификатор животного, удаляются с графика. Я был взволнован, что добился этого, но, как я уже сказал, это было в подмножестве моих данных, которые я уже отредактировал вручную.
Для всего набора данных мне пришлось перебирать данные. поскольку животных наблюдали в больших группах, у меня было 8 столбцов с идентификаторами животных, которые были связаны вместе. это пришлось преобразовать в два столбца, в которых были охвачены все возможные перестановки в одном месте (поэтому для группы из 4 животных мне понадобилась комбинация 1-2; 1-3; 1-4; 2-3; 2-4 и 3-4 и группы варьируются от 1 до 8 животных (вершины)). Я сделал это с помощью пакетов tidyr
и dplyr
(и справки). когда в одном из столбцов нет значения (потому что это было отдельное существо) R говорит:
Warning messages:
1: In graph.data.frame(y, directed = FALSE) :
In `d' `NA' elements were replaced with string "NA"
2: In `[<-.factor`(`*tmp*`, thisvar, value = "NA") :
invalid factor level, NA generated
Итак, на мой взгляд, он заменяет пустое пространство на NA
, что также отображается, когда он сообщает R показать новые обработанные данные. однако трюк с удалением вершин больше не работает. он постоянно говорит "invalid vertex name"
. Я пробовал это с ""
, с "NA"
, NA
, "<NA>"
и всем логичным, что я мог придумать, но я не могу решить эту проблему.
Я надеюсь, что это ошибка, которую можно легко решить с помощью другого "или" или чего-то еще. У кого-нибудь есть идеи?