通常はライブラリをロードし、パッケージ環境(およびネームスペース)内のすべての関数をトレースします。私はこれを行うには小さなヘルパー関数を使用します:
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)
}
例:
library(data.table)
trap_funs(as.environment("package:data.table"))
trap_funs(asNamespace("data.table"))
この第二の文は、このようなも閉じ込められてしまうdata.table::xxx()
として呼び出すことを保証するために必要とされています。
例:コードが中断されたこと
> as.data.table(mtcars)
Tracing as.data.table(mtcars) on entry
Error in eval(expr, envir, enclos) : Script called function as.data.table
注意。
機能の由来を知る必要がありますか? – Thomas
私が実際にやりたいことは、使用されていないパッケージを排除することです。私は古いプロジェクトのコードを再利用するので、私はいつもパッケージを追加しているようですが、未使用のパッケージを見つけるために何らかのバイセクトを手動で行うことはできますが、これは面倒です。理想的には、実際に呼び出されたものの実行後実行を取得することができます。 –
これらのヘルプを実行してください:http://stackoverflow.com/questions/8761857/identifying-dependencies-of-r-functions-and-scripts and http://stackoverflow.com/questions/17402735/between-function-possible -improvement – Thomas