首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >所有组合的graph.lattice ( R)

所有组合的graph.lattice ( R)
EN

Stack Overflow用户
提问于 2015-02-27 20:48:55
回答 1查看 558关注 0票数 2

问候:这个图表应该是非常简单的东西,使用igraph为R。我正在试图找出我需要传递的参数,以获得子模式和超级模式之间的边。在本例中,表示由5个项组成的项集。

我确信这一点通过graph.lattice函数在igraph中得到了解决,但我还没有计算出要传递的参数。请注意,提供的图表来自数据挖掘:概念和技术(Han,Kamber,& Pei,2011)。

提前感谢您的指导。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-12 13:27:42

我不认为graph.lattice能够创建这样的图形。但是您可以定义一个新函数:

代码语言:javascript
复制
graph.comb <- function(word) {
  # creates graph objects from character combination in word
  # example graph.comb("abc")

  do_layer <- function(words) {
    do.call( rbind, lapply(words, function(word){
      l_vec <- sapply(seq_len(nchar(word)), function(l) substring(word, l, l))
      w_comb <- apply(combn(l_vec, nchar(word)-1), 2, paste, collapse = "")
      w_df <- expand.grid(from = w_comb, to = word, stringsAsFactors = FALSE)
    }))
  }

  df_edges <- data.frame(from = word, to = NA, stringsAsFactors = FALSE)
  df2 <- df_edges
  while( min(nchar(df_edges$from)) > 0) {
    df2 <- do_layer(df2$from)
    df_edges <- rbind(df_edges, df2)
  }
  df_edges <- df_edges[complete.cases(df_edges), ]
  df_edges <- df_edges[!duplicated(df_edges), ]
  return(graph.data.frame(df_edges ))
}

将它与任何字符串一起使用:

代码语言:javascript
复制
g1 <- graph.comb("abcd")
plot(g1, layout = layout.sugiyama(g1)$layout )

结果:

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

https://stackoverflow.com/questions/28774012

复制
相关文章

相似问题

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