Caricare normalmente la libreria e tracciare tutte le funzioni nell'ambiente del pacchetto (e nello spazio dei nomi). Userò una piccola funzione di supporto per fare questo:
trap_funs <- function(env)
{
f <- sapply(as.list(env, all.names=TRUE), is.function)
for(n in names(f)[f]) trace(n, bquote(stop(paste("Script called function", .(n)))), where=env)
}
Esempio:
library(data.table)
trap_funs(as.environment("package:data.table"))
trap_funs(asNamespace("data.table"))
è necessaria Questa seconda affermazione al fine di garantire che le chiamate come data.table::xxx()
anche ottenere intrappolati.
Esempio:
> as.data.table(mtcars)
Tracing as.data.table(mtcars) on entry
Error in eval(expr, envir, enclos) : Script called function as.data.table
Si noti che il codice è stato interrotto.
fonte
2013-08-19 12:02:36
Hai bisogno di sapere da quale pacchetto provengono le funzioni? – Thomas
Quello che mi piacerebbe davvero fare è eliminare i pacchetti che non vengono utilizzati. Mentre riutilizzo il codice di vecchi progetti, mi sembra di aggiungere sempre (ma mai take-away) i pacchetti, e mentre potrei fare manualmente una specie di bisect per trovare i pacchetti non utilizzati, sarebbe una seccatura. Idealmente, potrei ottenere solo un run-down post-esecuzione di ciò che è stato effettivamente chiamato. –
Fai una di queste domande: http://stackoverflow.com/questions/8761857/identifying-dependencies-of-r-functions-and-scripts e http://stackoverflow.com/questions/17402735/between-function-possible -improvement – Thomas