重新编码igraph中的顶点属性

时间:2018-07-31 00:14:40

标签: r igraph

我有一个图形,其属性为字符。我想将字符转换为数字变量:

#install.packages(c("igraph", "igraphdata"))
library(igraph)
library(igraphdata)
data(macaque)
get.vertex.attribute(macaque,"shape")

如何将“形状”属性从“正方形” /“圆形”(字符)转换为0/1(数字)?

3 个答案:

答案 0 :(得分:2)

像您一样,我发现V(macaque)$shape的类型恢复为字符,即使我指定了数值也是如此。

在我们解决之前,一种解决方法是如下添加新属性Shape(大写的S)。

V(macaque)$Shape <- ifelse(V(macaque)$shape == "square", 0, 1)

编辑:您可以按照G5W的答案分配值;还有一个理由是不修改现有属性。

答案 1 :(得分:2)

如果仅将新值存储到旧属性中,它将把所有内容保留为字符值。您可以通过以下方法解决此问题:存储新值,删除现有属性,然后创建具有相同名称的新属性。

temp = ifelse(V(macaque)$shape=="square", 0, 1)
macaque = delete_vertex_attr(macaque, "shape")
V(macaque)$shape = temp

现在形状将是数字。

答案 2 :(得分:0)

更新:根据此答案Change attributes of one node

找到了解决方案
 V(macaque)$shape[which(V(macaque)$shape=="square")]=0
 V(macaque)$shape[which(V(macaque)$shape=="circle")]=1

编辑:刚刚意识到它不会将数据转换为数字,而是将其保留为字符。