igraph 和 POSIXct
igraph & POSIXct
我有以下数据
library(data.table); library(igraph)
t <- data.table(a=seq(ISOdate(2019,1,1), ISOdate(2019,7,1), "months"),
b=seq(ISOdate(2019,1,2), ISOdate(2019,7,2), "months"))
g <- graph_from_edgelist(as.matrix(t[,c("a","b")]))
并想申请 subcomponent(g,ISOdate(2019,1,1),"out")
但得到
的错误
At structural_properties.c:1249 : subcomponent failed, Invalid vertex id
有人知道这个问题的解决方案吗?
其他并发症
当我有一个额外的变量时,问题就复杂了
start <- seq(ISOdate(2019,1,1), ISOdate(2019,7,1), "months")[c(1,3,5,7)]
包含不同的起始顶点。同样,subcomponent(g,start,"out")
给出了上面的错误。是否有解决方法,类似于 Ben 在上述案例的评论中提出的建议?
通常您可以使用 match
函数或 %in%
运算符。然而,subcomponent
-函数只允许单个查询。为了让它工作,我需要调整你的 start
向量,因为时区是在那里添加的,但不是在原始图中:
start <- gsub(" GMT", "", start)
所以回答你的问题(基于我上面的评论):你可以使用 adjacent_vertices
函数,它一次查询多个顶点。
adjacent_vertices(g, V(g)$name %in% start, mode = "out")
这里的缺点是,只报告目标顶点而不是起始顶点。我不知道可以纠正此问题的现有功能。因此,为了获得起始顶点和目标顶点,您可以编写自己的函数:
lapply(1:length(start), function(x) subcomponent(g, V(g)$name == start[x], "out"))
希望对您有所帮助。
我有以下数据
library(data.table); library(igraph)
t <- data.table(a=seq(ISOdate(2019,1,1), ISOdate(2019,7,1), "months"),
b=seq(ISOdate(2019,1,2), ISOdate(2019,7,2), "months"))
g <- graph_from_edgelist(as.matrix(t[,c("a","b")]))
并想申请 subcomponent(g,ISOdate(2019,1,1),"out")
但得到
At structural_properties.c:1249 : subcomponent failed, Invalid vertex id
有人知道这个问题的解决方案吗?
其他并发症
当我有一个额外的变量时,问题就复杂了
start <- seq(ISOdate(2019,1,1), ISOdate(2019,7,1), "months")[c(1,3,5,7)]
包含不同的起始顶点。同样,subcomponent(g,start,"out")
给出了上面的错误。是否有解决方法,类似于 Ben 在上述案例的评论中提出的建议?
通常您可以使用 match
函数或 %in%
运算符。然而,subcomponent
-函数只允许单个查询。为了让它工作,我需要调整你的 start
向量,因为时区是在那里添加的,但不是在原始图中:
start <- gsub(" GMT", "", start)
所以回答你的问题(基于我上面的评论):你可以使用 adjacent_vertices
函数,它一次查询多个顶点。
adjacent_vertices(g, V(g)$name %in% start, mode = "out")
这里的缺点是,只报告目标顶点而不是起始顶点。我不知道可以纠正此问题的现有功能。因此,为了获得起始顶点和目标顶点,您可以编写自己的函数:
lapply(1:length(start), function(x) subcomponent(g, V(g)$name == start[x], "out"))
希望对您有所帮助。