【问题标题】:Error with igraph libraryigraph 库出错
【发布时间】:2014-08-22 19:09:59
【问题描述】:

我正在尝试使用以下 R 库:iSubpathwayMiner,它需要以下软件包: graphigraphRBGL。 运行字符串时

graphList<-getMetabolicECECGraph()

您可以在小插图中找到,发生以下我无法管理的错误:

#    Error in if (get.vertex.attribute(graphList[[i]], "type", j - 1) %in%  : 
#      argument is of length zero

谁能帮助我至少尝试理解它的含义以及如何管理它?

提前谢谢你

最好的

【问题讨论】:

  • 由于未解决的错误和冲突,库 iSubpathwayMiner 已从 CRAN 中删除。此外,graph 库不适用于最新的R 版本。也许该错误是由于上述冲突造成的。您也没有提及您使用的R 版本和平台。您发布的错误很可能是由 graphList(如果已填充)没有属性 type 造成的。

标签: r graph igraph


【解决方案1】:

错误是说if 的参数是NULL。这很可能是因为您的图表没有名为type 的属性。这些库存在错误和其他未解决的冲突,因此无法排除其他任何问题。

您可以在 R 会话中运行此示例

library(igraph)
g <- graph.ring(10)
g <- set.graph.attribute(g, "name", "RING")
g <- set.vertex.attribute(g, "color", value=c("red", "green"))

get.vertex.attribute(g, "color")
#>[1] "red"   "green" "red"   "green" "red"   "green" "red"   "green" "red"   "green"

#Asking for an attribute that does not exist will return NULL
get.vertex.attribute(g, "day")
#>NULL

#And 
if(NULL){print(1)}
#>Error in if (NULL) { : argument is of length zero

#so
if(get.vertex.attribute(g, "day") %in% c("Mon","Tue","Wed")){print("doSomething")}
#>Error in if (get.vertex.attribute(g, "day") %in% c("Mon", "Tue", "Wed")) { : 
#argument is of length zero

一般来说,您应该事先使用is.null() 之类的东西来检查if 语句的参数不是NULL

【讨论】:

  • 非常感谢鲁桑。我只是在输入小插图中报告的代码。此外,该软件包与最新的 R 版本 3.1.1 不兼容,因此最好不要再使用它。再次感谢您!
  • 没问题。是的,始终最好检查包裹是否是最新的并且已通过 CRAN 检查。
猜你喜欢
  • 2016-07-12
  • 2018-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-12
  • 1970-01-01
相关资源
最近更新 更多