繁体   English   中英

如何从数据中生成R中的igraph兼容边集

[英]How to generate an igraph-compatible edge set in R from data

我有一个数据集,当前包含一组单词以及它们最初的段落,如下所示:

word <- c("wind", "statement", "card", "growth", "egg", "caption", "statement", "robin", "growth")
paragraph <- c(1, 1, 1, 2, 2, 2, 3, 3, 3)
data <- data.frame(word, paragraph)

我试图从它生成一个igraph的边缘列表,根据它在这样的段落中的共现来连接每个单词:

node1 <- c("wind", "wind", "statement", "statement", "card", "card", "growth", "growth", "egg", "egg", "caption", "caption", "statement", "statement", "robin", "robin", "growth", "growth")
node2 <- c("statement", "card", "wind", "card", "wind", "statement", "egg", "caption", "growth", "caption", "growth", "egg", "robin", "growth", "statement", "growth", "statement", "robin")
edges <- data.frame(node1, node2)

到目前为止,我只是想出了如何根据段落使用来计算每个单词之间的相关性

data <- data %>% group_by(word) %>% pairwise_cor(word, paragraph, sort = TRUE)

来自widyr包,但对于我想要运行的其他操作,我真的需要边缘是实际的共现数而不是相关系数。 有谁知道是否有一些代码可以解决这个问题? 任何帮助将非常感谢!!

当你说“我真的需要边缘是实际的共现数而不是相关系数”时,我不太清楚你的意思。 然而,“我正在尝试为它创建一个边缘列表,根据它在段落中的共现来连接每个单词”似乎很清楚。 我认为这意味着如果两个单词在同一段落中,它们会被链接起来。 你可以像这样使用combn制作那种combn

Edges = c()
for(p in unique(data$paragraph)) { 
    Edges = c(Edges, word[combn(which(data$paragraph == p), 2)]) }
EL = matrix(Edges, ncol=2, byrow=T)

library(igraph)

g = graph_from_edgelist(EL, directed=FALSE)
plot(g)

段落图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM