首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从图形对象生成数据帧?

如何从图形对象生成数据帧?
EN

Stack Overflow用户
提问于 2017-12-15 05:21:45
回答 2查看 632关注 0票数 0

我有一个很大的,266个顶点的有向图。我想要拆分一些路径,这样我就可以使用构成它们的属性的数据在两个路径之间运行t检验或方差分析。问题是我想要处理边缘属性,特别是。我不知道该如何解决这个问题。

我正在研究的每条路径都有20或21个顶点,所以我也在考虑使用重复测量测试。

让我们使用这个:

代码语言:javascript
运行
复制
inst2 = c(2, 3, 4, 5, 6) 
motherinst2 = c(7, 8, 2, 10, 11) 
km = c(20, 30, 40, 25, 60)
df2 = data.frame(inst2, motherinst2)
df2 = cbind(df2, km)
g2 = graph_from_data_frame(df2)
tkplot(g2)

假设我想创建一个数据帧,其中5-10和8-3作为数据帧,它们的边属性(km)作为行中的值。

所以它是这样的:

代码语言:javascript
运行
复制
       5-10      3-8

 1       30       25

我该怎么做呢?有没有一种方法可以让我只指定我的根节点,并仅基于此来创建一个数据帧?即使是两个独立的ones...then,我也可以稍后再绑定。

EN

回答 2

Stack Overflow用户

发布于 2017-12-15 06:23:18

我不认为你真的需要事先把它转换成图表。您可以使用expand.grid来获取所有可能的边组合,以便相互测试。

代码语言:javascript
运行
复制
start <- 1
end <- 2
df3 <- df3[df3$isnt2 %in% c(start, end) | df3$motherinst2 %in% c(start, end),]
ind <- expand.grid(1:nrow(df2), 1:nrow(df2))
df3 <- data.frame(df2[ind[[1]], ], df2[ind[[2]], ])

现在,您可以子集到所需的开始和结束节点以进行测试。

票数 0
EN

Stack Overflow用户

发布于 2017-12-15 08:53:58

这就是你要找的吗?

代码语言:javascript
运行
复制
inst2 = c(2, 3, 4, 5, 6)
motherinst2 = c(7, 8, 2, 10, 11)
km = c(20, 30, 40, 25, 60)
df2 = data.frame(inst2, motherinst2)
df2 = cbind(df2, km)

require(igraph);
g2 = graph_from_data_frame(df2)

让我们从名为g2igraph对象开始。

代码语言:javascript
运行
复制
# Store as dataframe
df <- with(as_data_frame(g2), setNames(rbind.data.frame(km), paste(from, to, sep = "-")))
df;
#  2-7 3-8 4-2 5-10 6-11
#1  20  30  40   25   60

注意,考虑到您是从dataframe开始的,您也可以直接执行以下操作:

代码语言:javascript
运行
复制
df <- with(df2, setNames(rbind.data.frame(km), paste(inst2, motherinst2, sep = "-")))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47822242

复制
相关文章

相似问题

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