使用DiagrammeR,可以逐步构建流程图,并在需要时使用render_graph 进行渲染。但是,如果不勤奋,它可能会变得有点笨拙,如下面的一个简单示例所示。
library(DiagrammeR)
# Create an empty graph
graph <- create_graph()
#create simple data frame of individuals of random ages
df<-data.frame(id=1:100,age=rnorm(100,40,5))
head(df)
# Add a node for df, df$id, and df$age
graph <- add_node(graph, node = "df")
graph <- add_node(graph, node = "df$age")
graph <- add_node(graph, node = "df$id")
# Vector of breaks for cut
breaks <- c(0,seq(20,60,by=5),Inf)
# Add a node for breaks
graph <- add_node(graph,node = "breaks")
# Create df.cut data frame of age intervals
df.cut <- data.frame(id = df$id,
interval = cut(df$age,breaks = breaks))
# Add nodes for df.cut, data.frame, cut
# Use a different node shape for operations
graph <- add_node(graph,
node = "df.cut")
graph <- add_node(graph,
node = "data.frame",
shape = "square")
graph <- add_node(graph,
node = "cut",
shape = "square")
# Add edges for df$id, df$age
# Use different arrowhead to indicate operation
graph <- add_edges(graph,
create_edges(
from = c("df","df"),
to = c("df$id","df$age"),
rel = "to_get",
arrowhead = "box")
)
# Add edges for cut
graph <- add_edges(graph,
from = c("df$age", "breaks", "cut"),
to = c("cut", "cut", "df.cut"),
rel = c("to_get","to_get", "to_get"))
# Add edges for data.frame
graph <- add_edges(graph,
from = c("df$id", "cut", "data.frame"),
to = c("data.frame", "data.frame", "df.cut"),
rel = c("to_get","to_get", "to_get"))
render_graph(graph)