Я задаю этот вопрос, потому что я думаю, что это будет очень полезная функция для многих людей.
Я хотел бы создать диаграмму типа супруги для написанного мной сценария, которая позволит мне визуально видеть поток данных через сценарий. Под потоком данных я на самом деле имею в виду, как один фрейм данных ведет к другому (и, возможно, по nrow для каждого фрейма данных, чтобы получить представление о числах).
DiagrammeR
позволяет это построить, но я довольно ручная задача. Я думаю, что решение состоит из двух частей, но я не уверен, стоит ли мне задавать два отдельных вопроса. Чтобы избежать гнева, я просто задаю первую часть здесь.
Типичная диаграмма R выглядит следующим образом:
Часть 1. Соберите имена фреймов данных
nodes <- create_node_df(n=10,
nodes=c("TheOGDReportFinal", "PathDataFrameFinal", "MyOGD","MyPath","FinalDataset","FinalDatasetBarr","BarrettsBxQual2","LastTestsDone","FirstTestsDone","ff"),
label=c(stringr::str_wrap(paste0("TheOGDReportFinal: ",nrow(TheOGDReportFinal)),5),
stringr::str_wrap(paste0("PathDataFrameFinal: ",nrow(PathDataFrameFinal)),5),
stringr::str_wrap(paste0("MyOGD: ",nrow(MyOGD)),5),
stringr::str_wrap(paste0("MyPath:",nrow(MyPath)),5),
stringr::str_wrap(paste0("FinalDataset:",nrow(FinalDataset)),5),
stringr::str_wrap(paste0("FinalDatasetBarr: ",nrow(FinalDatasetBarr)),5),
stringr::str_wrap(paste0("BarrettsBxQual2: ",nrow(BarrettsBxQual2)),5),
stringr::str_wrap(paste0("LastTestsDone: ",nrow(LastTestsDone)),5),
stringr::str_wrap(paste0("FirstTestsDone: ",nrow(FirstTestsDone)),5),
stringr::str_wrap(paste0("ff: ",nrow(ff)),5)),
shape = "rectangle",
fontsize=10)
Часть 2. Укажите, как связаны кадры данных
edges <-
create_edge_df(
from = c(1,2,3,4,5,6,6,6,6),
to = c(3,4,5,5,6,7,8,9,10))
Часть 3. Создание диаграммы:
g <- create_graph(nodes_df=nodes,
edges_df=edges)%>%
add_global_graph_attrs(
attr = c("layout", "rankdir", "splines"),
value = c("dot", "TB", "false"),
attr_type = c("graph", "graph", "graph"))
render_graph(g)
Первая часть - собрать все имена фреймов данных в один вектор. Я предполагаю, что это означает запросить глобальную среду, чтобы увидеть, какие кадры данных присутствуют? Однако при этом могут быть получены кадры данных, которые не являются частью сценария. Так как же можно идентифицировать все кадры данных в сценарии?