首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >igraph & POSIXct

igraph & POSIXct
EN

Stack Overflow用户
提问于 2019-07-11 07:37:28
回答 1查看 70关注 0票数 0

我有以下数据

代码语言:javascript
复制
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"),但获得以下错误:

代码语言:javascript
复制
 At structural_properties.c:1249 : subcomponent failed, Invalid vertex id

有人知道这个问题的解决办法吗?

附加并发症

当我有一个额外的变量时,这个问题是复杂的。

代码语言:javascript
复制
start <- seq(ISOdate(2019,1,1), ISOdate(2019,7,1), "months")[c(1,3,5,7)]

它包含不同的起始顶点。同样,subcomponent(g,start,"out")给出了上面的错误。是否有一个解决办法,类似于本的建议,在对上述情况的评论?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-11 09:56:50

通常,您可以使用match函数或%in%运算符。但是,subcomponent-function只允许单个查询。为了使其工作,我需要调整您的start矢量,因为时区是在那里添加的,但没有添加到原始图中:

代码语言:javascript
复制
start <- gsub(" GMT", "", start)

因此,要回答您的问题(基于上面的注释):您可以使用adjacent_vertices函数,它同时查询多个顶点。

代码语言:javascript
复制
adjacent_vertices(g, V(g)$name %in% start, mode = "out")

这里的缺点是,只报告目标顶点,而不报告起始顶点。我不知道有一个现有的函数可以纠正这一点。因此,为了获得起始点和目标顶点,您可以编写自己的函数:

代码语言:javascript
复制
lapply(1:length(start), function(x) subcomponent(g, V(g)$name == start[x], "out"))

我希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56983943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档