首页 > 解决方案 > 如何删除 NA(空)顶点

问题描述

我正在使用igraph包制作(无向)社交网络图,我已经使用我的数据子集进行了练习。为此,顶点必须位于两列中,这样所有关联都会显示出来。但是有时会单独遇到一个顶点(个人,我正在与动物一起工作),没有关联。所以这个动物将在左列,而在右列没有任何东西,一个空单元格。

然而,在igraph包中,R 认为“NA”/nothing 是一个动物 ID,因此它从中生成了一个顶点。在我的子集中,我已经像这样解决了这个问题:

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, "")

因此,在上面显示的代码中,填充了 nog 动物 ID 的空值将从图中删除。我很高兴我做到了这一点,但正如我所说,它是我已经手动编辑过的数据的一个子集。

对于整个数据集,我不得不整理数据。因为动物是在更大的群体中观察的,所以我有 8 个带有动物 ID 的列,它们都关联在一起。这必须改造成两列,其中涵盖了单个位置上的所有可能排列(因此对于一组 4 只动物,我需要组合 1-2;1-3;1-4;2-3;2-4和 3-4 组,从 1 到 8 只动物(顶点)不等。我已经用tidyranddplyr包(和帮助)做到了这一点。当其中一列没有值时(因为它本身就是一个个体)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"""我用, with "NA",和所有我能想到的合乎逻辑的东西都试过了NA"<NA>"但我似乎无法解决这个问题。

我希望它是一个错误,可以通过不同的“或”或其他东西轻松解决。有人有什么想法吗?

标签: rigraphnavertex

解决方案


推荐阅读