Spa*_*man 30 r call-graph
我已经获得了大量格式不佳的单片R代码,并且有很多功能,我想知道哪些函数调用了什么函数.
我以为我可以使用roxygen的@callGraph东西,但是a)代码需要在一个包中,这将是这个代码的头疼,并且b)当我在一个简单的上运行它时它似乎不起作用我的包裹.我看到其中一位Roxygen作者发布了一条帖子,称由于Rgraphviz依赖关系而禁用了调用图生成,但代码就在那里.无论如何.
任何人都有更好的方法来快速计算foo调用bar,baz和qux,而qux调用quux?
编辑:基于R的分析系统的解决方案很棒,假设您可以实际运行代码...文件中的一半东西不会运行,我不知道它做了什么...静态分析太多了我想是希望的.
编辑2:Roxygen的调用图东西似乎做了一个静态分析,基于函数表达式的递归下降和检查is.callable.能够在任何功能上运行它会很可爱......明天我可能会玩这个...
教授会帮助你吗?从文档中:
> ?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)
Run Code Online (Sandbox Code Playgroud)

不完全是您想要的,但您可以根据您的需要进行调整。