在R的igraph中生成诱导子图时遭遇顶点名称无效错误
解决igraph生成诱导子图时的"Invalid vertex name(s)"错误
先排查Daerah属性的问题:
- 先检查这个属性的类型和取值:
大概率是class(V(snet)$Daerah) table(V(snet)$Daerah, useNA = "always")Daerah是因子(factor)类型,或者存在NA值,导致逻辑向量传递给induced_subgraph时解析出错。
具体解决方法
把因子转成字符类型再筛选
先将Daerah属性转换为字符,再执行筛选:V(snet)$Daerah <- as.character(V(snet)$Daerah) b <- induced_subgraph(snet, V(snet)$Daerah == "Sabak Bernam")用
which()获取顶点索引(最稳妥)
直接把逻辑筛选结果转成顶点的索引值,避免igraph解析顶点名称时出错:b <- induced_subgraph(snet, which(V(snet)$Daerah == "Sabak Bernam"))过滤NA值(如果存在)
如果Daerah里有NA,会导致逻辑向量包含NA,进而触发错误,加上NA过滤:b <- induced_subgraph(snet, which(V(snet)$Daerah == "Sabak Bernam" & !is.na(V(snet)$Daerah)))换用
subgraph.vertices()函数
和induced_subgraph功能一致,试试这个函数是否能正常运行:b <- subgraph.vertices(snet, which(V(snet)$Daerah == "Sabak Bernam"))
内容的提问来源于stack exchange,提问作者JULIANA
相关产品推荐
相关产品推荐

