studio - superponer graficas en r ggplot
Generando un gráfico de llamadas en R (4)
¿ profr ayudaría profr ? De la documentación:
> ?profr
> glm_ex <- profr(example(glm))
Read 17 items
> head(glm_ex)
f level time start end leaf source
8 example 1 0.32 0.00 0.32 FALSE utils
9 <Anonymous> 2 0.04 0.00 0.04 FALSE <NA>
10 source 2 0.28 0.04 0.32 FALSE base
11 prepare_Rd 3 0.02 0.00 0.02 FALSE <NA>
12 render 3 0.02 0.02 0.04 FALSE <NA>
13 getSrcLines 3 0.02 0.04 0.06 FALSE base
> summary(glm_ex)
f level time start
eval.with.vis :10 Min. : 1.000 Min. :0.02 Min. :0.0000
<Anonymous> : 3 1st Qu.: 4.000 1st Qu.:0.02 1st Qu.:0.1200
lazyLoadDBfetch: 3 Median : 6.000 Median :0.02 Median :0.2000
%in% : 3 Mean : 7.211 Mean :0.03 Mean :0.1769
inherits : 3 3rd Qu.: 9.000 3rd Qu.:0.02 3rd Qu.:0.2600
is.factor : 3 Max. :22.000 Max. :0.32 Max. :0.3000
(Other) :65
end leaf source
Min. :0.0200 Mode :logical Length:90
1st Qu.:0.1500 FALSE:75 Class :character
Median :0.2400 TRUE :15 Mode :character
Mean :0.2069 NA''s :0
3rd Qu.:0.2800
Max. :0.3200
> plot(glm_ex)
No es exactamente lo que está buscando, pero puede adaptarlo a sus necesidades.
Me han dado una gran parte de código R monolítico mal formateado con muchas funciones, y me gustaría averiguar qué funciones llaman a qué funciones.
Pensé que podría usar las cosas de @callGraph de roxygen, pero a) el código debe estar en un paquete, que será un dolor de cabeza con este código, yb) ni siquiera parece funcionar cuando lo ejecuto de forma simple paquete mio Veo una publicación de uno de los autores de Roxygen que dice que la generación de gráficos de llamadas está deshabilitada debido a la dependencia de Rgraphviz, pero el código está ahí. De todas formas.
¿Alguien tiene una mejor manera de resolver rápidamente que foo calls bar, baz, y qux, y qux se llama quux?
Edición: las soluciones basadas en el sistema de perfiles de R son excelentes, suponiendo que realmente pueda ejecutar el código ... La mitad de las cosas en los archivos no se ejecutan, y no sé lo que hace ... El análisis estático es demasiado para esperar, supongo.
Edición 2: las cosas del gráfico de llamadas de Roxygen parecen hacer un análisis estático, basado en el descenso recursivo de la expresión de la función y la verificación de si.callable. Sería encantador poder ejecutar esto en cualquier función ... Puedo jugar con esto mañana ...
Además de proftools y profr, está el script Perl de Romain en la R Wiki. Combinado con graphviz, hace gráficos (con bordes cargados); consulte aquí para obtener más información.
No lo he usado, pero un vistazo rápido al paquete proftools indica que puede hacerlo. Primero deberá ejecutar Rprof y luego usar proftools para analizar el resultado. Creo que quieres la función plotProfileCallGraph()
.