我有一个图形,其属性为字符。我想将字符转换为数字变量:
#install.packages(c("igraph", "igraphdata"))
library(igraph)
library(igraphdata)
data(macaque)
get.vertex.attribute(macaque,"shape")
如何将“形状”属性从“正方形” /“圆形”(字符)转换为0/1(数字)?
答案 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
编辑:刚刚意识到它不会将数据转换为数字,而是将其保留为字符。