Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DiagrammeR:从最小节点和边数据帧创建图形_R_Diagrammer - Fatal编程技术网

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