DiagrammeR:从最小节点和边数据帧创建图形
我正在尝试使用DiagrammeR:从最小节点和边数据帧创建图形,r,diagrammer,R,Diagrammer,我正在尝试使用DiagrammeR包根据手工创建的两个简单数据帧创建一个图形。结果图应该只有两个节点('a'和'b')和一条连接它们的边('a'->'b') 根据文档,这似乎应该很容易做到。 从1.0.1版的软件包文档中,以下是对create\u graph()函数的最小输入: nodes\u df:可选数据框,至少包含一列 (称为id),其中包含图形的节点id。附加列 (节点属性)可以包含在命名节点的值中 属性 edges\u df:至少包含两列的可选数据框 (从和到调用)其中提供节点ID。附
DiagrammeR
包根据手工创建的两个简单数据帧创建一个图形。结果图应该只有两个节点('a'和'b')和一条连接它们的边('a'->'b')
根据文档,这似乎应该很容易做到。
从1.0.1版的软件包文档中,以下是对create\u graph()
函数的最小输入:
nodes\u df
:可选数据框,至少包含一列
(称为id),其中包含图形的节点id。附加列
(节点属性)可以包含在命名节点的值中
属性
edges\u df
:至少包含两列的可选数据框
(从和到调用)其中提供节点ID。附加列
(边属性)可以包含在命名边的值中
属性
基于此文档,似乎以下两种定义图形的尝试中至少有一种可行:
library(Diagrammer)
options('stringsAsFactors' = FALSE)
# Using integer node IDs
create_graph(nodes_df = data.frame(id = c(1L, 2L)),
edges_df = data.frame(from = 1L, to = 2L))
# Using character node IDs
create_graph(nodes_df = data.frame(id = c('a', 'b')),
edges_df = data.frame(from = 'a', to = 'b'))
但是,在两次尝试创建图形时,我收到以下错误消息:
Error in `[.data.frame`(nodes_df, , i) : undefined columns selected
为什么电话没有按预期工作?通过仅使用
data.frame()
函数创建节点和边数据帧来创建预期图形的最小方法是什么,类似于这里给出的示例?我不确定是否对您的问题理解得足够透彻,但是,我认为最好使用create_node_df
和crete_edge_df
而不是使用data.frame
函数。在使用此软件包时,我给了您一个示例:
l1 <- c("a", "b", "c")
l2 <- c("b", "c", "d")
# find all the unique nodes
all<- unique(union(l1, l2))
all
#creating a node data frame
nodes<- create_node_df(n= length(all),
style= "filled",
label= all,
color= "lightblue",
shape= "box")
# data frame of edges
edges<-create_edge_df(from = match(l1, all),
to=match(l2, all),
label = all,
rel= "related",
color= "black")
edges
graph<-create_graph(nodes, edges)
render_graph(graph)
l1我不确定我是否理解您的问题,但是,我认为最好使用create\u node\u df
和crete\u edge\u df
而不是使用data.frame
函数。在使用此软件包时,我给了您一个示例:
l1 <- c("a", "b", "c")
l2 <- c("b", "c", "d")
# find all the unique nodes
all<- unique(union(l1, l2))
all
#creating a node data frame
nodes<- create_node_df(n= length(all),
style= "filled",
label= all,
color= "lightblue",
shape= "box")
# data frame of edges
edges<-create_edge_df(from = match(l1, all),
to=match(l2, all),
label = all,
rel= "related",
color= "black")
edges
graph<-create_graph(nodes, edges)
render_graph(graph)
l1