Sprawdzanie, które funkcje są wywoływane w ramach danej funkcji [duplikat]
Możliwy duplikat:
Generowanie wykresu wywołania w R
Chciałbym systematycznie analizować daną funkcję, aby dowiedzieć się, które inne funkcje są wywoływane w tej samej funkcji. Jeśli to możliwe, rekurencyjnie.
Tę funkcję natknąłem się na blogu przezmilktrader z którym mogę zrobić coś podobnegopakiety (lub przestrzenie nazw)
listFunctions <- function(
name,
...
){
name.0 <- name
name <- paste("package", ":", name, sep="")
if (!name %in% search()) {
stop(paste("Invalid namespace: '", name.0, "'"))
}
# KEEP AS REFERENCE
# out <- ls(name)
funlist <- lsf.str(name)
out <- head(funlist, n=length(funlist))
return(out)
}
> listFunctions("stats")
[1] "acf" "acf2AR" "add.scope"
[4] "add1" "addmargins" "aggregate"
[7] "aggregate.data.frame" "aggregate.default" "aggregate.ts"
[10] "AIC" "alias" "anova"
....
[499] "xtabs"
Chciałbym jednak funkcję, gdziename
byłaby nazwą funkcji, a wartością zwracaną jest wektor znakowy (lub lista, jeśli jest rekurencyjna) funkcji, które są wywoływane w obrębiename
.
W rzeczywistości potrzebuję jakiegoś wyjścia opartego na znakach (wektor lub lista). Powodem tego jest to, że pracuję nad ogólną funkcją opakowywania równoległego do „wewnętrznej funkcji”, w której nie trzeba przechodzić przez czasochłonny proces prób i błędów, aby dowiedzieć się, które inne funkcje działają wewnętrzna funkcja zależy od. Tak więc wyjście funkcji, po której jestem, zostanie bezpośrednio użyte wsnowfall::sfExport()
i / lubsnowfall::sfSouce
.
EDYCJA 2012-08-08
Ponieważ było trochę głosów z powodu dwulicowości, sprawdzę, jak jutro można połączyć odpowiedzi z innym pytaniem.