如何将as_tbl_graph()与group_by()一起使用?
这是我最近遇到的一个问题的后续问题。这涉及到tidyverse和tidygraph。在阅读了tidygraph之后,我觉得我应该尝试一下,但我在工作流程中遇到了一个新问题 当使用如何将as_tbl_graph()与group_by()一起使用?,r,dplyr,tidygraph,R,Dplyr,Tidygraph,这是我最近遇到的一个问题的后续问题。这涉及到tidyverse和tidygraph。在阅读了tidygraph之后,我觉得我应该尝试一下,但我在工作流程中遇到了一个新问题 当使用groupby()动词fromdplyr为每个组创建一个图形时,as\u tbl\u graph()中的guess\u df\u type()函数fromtidygraph并不是我想要的,但我找不到一种方法来设置from和to值。下面是一个可复制的示例: library(tidygraph) library(tidyve
groupby()
动词fromdplyr为每个组创建一个图形时,as\u tbl\u graph()
中的guess\u df\u type()
函数fromtidygraph并不是我想要的,但我找不到一种方法来设置from
和to
值。下面是一个可复制的示例:
library(tidygraph)
library(tidyverse)
tmp <- tibble(
id_head = as.integer(c(4,4,4,4,4,4,5,5,5,5)),
id_sec = as.integer(c(1,1,1,2,2,2,1,1,2,2)),
token = as.integer(c(1,2,3,1,2,3,1,2,1,2)),
head = as.integer(c(2,2,2,1,1,2,2,2,2,2)),
root = as.integer(c(2,2,2,1,1,1,2,2,2,2))
)
tmp %>%
group_by(id_head, id_sec) %>%
as_tbl_graph()
结果:
# A tbl_graph: 3 nodes and 10 edges
#
# An undirected multigraph with 1 component
#
# Node Data: 3 x 1 (active)
name
<chr>
1 1
2 2
3 3
#
# Edge Data: 10 x 5
from to id_head id_sec root
<int> <int> <int> <int> <int>
1 1 2 4 1 2
2 2 2 4 1 2
3 2 3 4 1 2
# ... with 7 more rows
分组的_-df_-impl(数据、未命名(变量)、删除)中出错:
列id\u head
未知
所以无论哪种方式,我都不明白如何将group_by与tidygraph一起使用。非常感谢您的帮助!提前谢谢
另外,很抱歉使用igraph作为标记,它应该是tidygraph,但它还不存在。tidygraph是基于igraph和tidyverse tho构建的。对于第一个问题,我有点不确定如何将data.frame解析为图形-tidygraph包含有关其理解的所有图形表示的文档,我建议您参考此文档 对于第二个问题,这只是节点处于活动状态的问题,而边包含要分组的变量。只需在分组之前激活边
tmp %>%
rename(
from = token,
to = head
) %>%
as_tbl_graph() %>%
activate(edges) %>%
group_by(id_head, id_sec)
对于第一个问题,我有点不确定如何将data.frame解析为图形-tidygraph包含有关其理解的所有图形表示的文档,我建议您参考此文档 对于第二个问题,这只是节点处于活动状态的问题,而边包含要分组的变量。只需在分组之前激活边
tmp %>%
rename(
from = token,
to = head
) %>%
as_tbl_graph() %>%
activate(edges) %>%
group_by(id_head, id_sec)
关于第一部分:数据是文本数据的模型,
token
和head
表示消息(id\u head
)中句子(id\u sub
)中标记之间的相互关系作为依赖树。那么它是一种链表吗?你可能可以像链表一样处理它,但我不确定这是否有助于理解它这是NLP中依赖关系树的更好示例。在我的例子中,所有的令牌都至少在一条边上指向根令牌。对于这种图形表示,没有内置支持。如果您将单个data.frame作为_tbl_graph传递给,它将期望它是一个edgelist,但您的是一个节点列表,父/子记录为变量。我建议您将边缘信息提取到一个单独的数据框中,只需对第一部分进行tbl_图(节点、边缘)
:数据是文本数据的模型,并且token
和head
都表示消息中句子(id\u sub
)中标记之间的关系(id\u头
)作为依赖树。那么它是一种链表吗?你可能可以像链表一样处理它,但我不确定这是否有助于理解它。这是NLP中依赖树的一个更好的例子。在我的例子中,所有标记都至少在一条边上指向根标记。对于这种图表示,没有内置支持。如果您将一个data.frame作为_tbl_graph
传递给,它期望它是一个edgelist,但您的是一个节点列表,父/子记录为变量。我建议您将边信息提取到一个单独的数据框中,只需执行tbl_graph(节点,边)
tmp %>%
as_tbl_graph() %>%
group_by(id_head, id_sec)
tmp %>%
rename(
from = token,
to = head
) %>%
as_tbl_graph() %>%
activate(edges) %>%
group_by(id_head, id_sec)