Визуализация кода R с помощью блок-схемы

Есть ли инструменты, которые могут визуализировать R-код?

У меня есть очень сложный код R, разделенный на несколько скриптов, которые мне нужно понять. Частично сложность этого заключается в том, что существует так много вложенных функций и переменных, что оказывается очень медленно проходить через это вручную и выяснять, что с чем связано.

Я думаю, что моя задача могла бы быть проще, если бы существовал способ сгенерировать блок-схему из кода R, чтобы я мог видеть все сразу. Конечно, я могу просто нарисовать карту по мере прохождения кода, но разве это не должно быть программно возможно сделать это? Существуют ли какие-либо существующие инструменты, которые могут это сделать?

Я нашел программу под названием R AnalyticFlow, но, похоже, она СОЗДАВАЕТ сценарии с использованием графического интерфейса пользователя, тогда как мне нужно что-то, что может принимать код и превращать его в то, что можно было бы нарисовать в AnalyticFlow.


person Stonecraft    schedule 21.02.2018    source источник
comment
Для справки существует пакет под названием snakefood, который реализует это для Python: furius.ca/snakefood. Построение графиков вы можете делать (вручную) в GraphViz Dot. Здесь могут быть полезны ответы: stackoverflow.com/questions/44143110/ < / а>   -  person user5359531    schedule 22.02.2018
comment
Выглядит круто, я проверю. Если он также может визуализировать зависимости входных файлов, это именно то, что мне нужно.   -  person Stonecraft    schedule 22.02.2018
comment
Пакет drake звучит так, как будто он может быть вам полезен. Это помогает создавать графики зависимостей между вашими скриптами, чтобы увидеть, что не соответствует действительности. github.com/ropensci/drake   -  person Jon Spring    schedule 22.10.2018
comment
Спасибо, я попробую. Мне так и не удалось заставить CodeDepends работать, но у меня все еще есть потребность в этом.   -  person Stonecraft    schedule 22.10.2018


Ответы (1)


Вы можете легко визуализировать свои функции с помощью пакета mvbills.

Установить / импортировать

install.packages("mvbutils", dependencies = TRUE)
library(mvbutils)

И использовать

foodweb(where = environment())

В моем случае пример вывода был бы таким:

введите здесь описание изображения

Или, если это пакет (или вы просто хотите попробовать другой вариант), вы можете использовать DependenciesGraphs пакет.

person Felipe Augusto    schedule 19.12.2019